GNU bug report logs -
#36403
27.0.50; Trivial image.c bugs
Previous Next
Reported by: Pip Cet <pipcet <at> gmail.com>
Date: Thu, 27 Jun 2019 16:29:01 UTC
Severity: minor
Tags: fixed, patch
Found in version 27.0.50
Fixed in version 28.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #53 received at 36403 <at> debbugs.gnu.org (full text, mbox):
On Thu, Aug 20, 2020 at 11:32 PM Lars Ingebrigtsen <larsi <at> gnus.org> wrote:
> for (img = c->buckets[i]; img; img = img->next)
> if (img->hash == hash
> - && !NILP (Fequal (img->spec, spec))
> + && !equal_lists (img->spec, spec)
> && img->frame_foreground == FRAME_FOREGROUND_PIXEL (f)
> && img->frame_background == FRAME_BACKGROUND_PIXEL (f))
>
> I guess the !NILP (Fequal...) idiom tainted the rewrite...
I can confirm it did. However, my stupidity is not a very good
argument for changing Emacs, or all of it would need changing :-)
> I've often wondered why we use !NILP instead of, like TRUEP or
> something. !NILP doesn't feel very natural.
Paul's suggestion was to use equal () instead of !NILP (Fequal (...)).
I'm against that, because the F in Fequal kind of hints at the
difficulties of using equal, of which there are many: in the current
implementation, it can signal, quit, be asymmetric (signalling for
(equal a b) whereas (equal b a) works), and is susceptible to equality
bombs that take forever to compare. It cannot call Lisp, yet, but I
wouldn't be surprised if that changes. It's really not a function you
should use from C very often, and using it as a hash table predicate
is often the wrong thing to do.
Replacing !NILP is a better idea, but I'm struggling to come up with a
good name for that. But even a bad name would be an improvement.
This bug report was last modified 2 years and 222 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.