bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#6378: all-completions Segfault


From: Stefan Monnier
Subject: bug#6378: all-completions Segfault
Date: Tue, 08 Jun 2010 16:30:52 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

> Although I don't understand why the code-path for the vector
> version can't be simplified as in the following patch, which also
> fixes the problem AFAICT:

> diff --git a/src/minibuf.c b/src/minibuf.c
> index ad81bfd..c6aae27 100644
> --- a/src/minibuf.c
> +++ b/src/minibuf.c
> @@ -1610,22 +1610,14 @@ with a space are ignored unless STRING itself starts 
> with a space.  */)
>       }
>        else if (type == 2)
>       {
> -       if (!EQ (bucket, zero))
> -         {
> -           elt = bucket;
> -           eltstring = elt;
> -           if (XSYMBOL (bucket)->next)
> -             XSETSYMBOL (bucket, XSYMBOL (bucket)->next);
> -           else
> -             XSETFASTINT (bucket, 0);
> -         }
> -       else if (++index >= obsize)
> -         break;
> -       else
> -         {
> -           bucket = XVECTOR (collection)->contents[index];
> -           continue;
> -         }
> +          if ( index < obsize )
> +            {
> +              elt = bucket;
> +              eltstring = elt;
> +              bucket = XVECTOR (collection)->contents[++index];
> +            }
> +          else
> +            break;
>       }
>        else /* if (type == 3) */
>       {

IIUC this would only loop through all the buckets, without looping
through each bucket's linked list.
Compare (length obarray)
and     (let ((i 0)) (mapatoms (lambda (_) (incf i)) obarray) i)


        Stefan





reply via email to

[Prev in Thread] Current Thread [Next in Thread]