GNU bug report logs - #58338
29.0.50; mapatoms called on more elements than in obarray?

Previous Next

Package: emacs;

Reported by: Philip Kaludercic <philipk <at> posteo.net>

Date: Thu, 6 Oct 2022 16:17:02 UTC

Severity: normal

Found in version 29.0.50

Done: Philip Kaludercic <philipk <at> posteo.net>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 58338 <at> debbugs.gnu.org (full text, mbox):

From: Gerd Möllmann <gerd.moellmann <at> gmail.com>
To: Philip Kaludercic <philipk <at> posteo.net>
Cc: 58338 <at> debbugs.gnu.org
Subject: Re: bug#58338: 29.0.50; mapatoms called on more elements than in
 obarray?
Date: Thu, 06 Oct 2022 19:55:12 +0200
Philip Kaludercic <philipk <at> posteo.net> writes:

>>From reading the docstring of `mapatoms', I would assume that this would
> evaluate to t:
>
> (let ((i 0))
>   (mapatoms (lambda (_) (setq i (1+ i))) obarray)
>   (= (length obarray) i))
>
> But instead on my system I get (length obarray) ↝ 15121 and and i ↝
> 78050, which is are at a ratio of 5.16169565505.

obarray is a hash table. with each array element being a list of symbols
if not empty, for hash collisions.  And it's not a hash table of the
kind that make-hash-table makes, which I added much later.  And not a
Lisp list of symbols.

With your figures, it seems that there are on average 5 symbols per
bucket.  For details you'd have to look at the C code.




This bug report was last modified 2 years and 224 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.