[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
buffer.c: overlays_at, overlays_in
From: |
Janek Bogucki |
Subject: |
buffer.c: overlays_at, overlays_in |
Date: |
Wed, 14 Aug 2002 21:30:18 +0100 |
User-agent: |
Microsoft-Outlook-Express-Macintosh-Edition/5.0.3 |
Hi,
I noticed a discrepency between the functions overlays_at and overlays_in in
buffer.c rev 1.399.
Here the effect would be for overlays_in to not extend the vector if it was
zero length initially.
Fragment A: overlays_at
-----------------------
if (idx == len)
{
/* The supplied vector is full.
Either make it bigger, or don't store any more in it. */
if (extend)
{
/* Make it work with an initial len == 0. */
len *= 2;
if (len == 0)
len = 4;
*len_ptr = len;
vec = (Lisp_Object *) xrealloc (vec, len * sizeof (Lisp_Object));
*vec_ptr = vec;
}
else
inhibit_storing = 1;
}
Fragment B: overlays_in
-----------------------
if (idx == len)
{
/* The supplied vector is full.
Either make it bigger, or don't store any more in it. */
if (extend)
{
*len_ptr = len *= 2;
vec = (Lisp_Object *) xrealloc (vec, len * sizeof (Lisp_Object));
*vec_ptr = vec;
}
else
inhibit_storing = 1;
}
Then later in the final for block for each fuction we have a similar
situation.
Fragment C: overlays_at
-----------------------
if (extend)
{
*len_ptr = len *= 2;
if (len == 0)
len = *len_ptr = 4;
vec = (Lisp_Object *) xrealloc (vec, len * sizeof (Lisp_Object));
*vec_ptr = vec;
}
else
inhibit_storing = 1;
Fragment D: overlays_in
-----------------------
if (extend)
{
*len_ptr = len *= 2;
vec = (Lisp_Object *) xrealloc (vec, len * sizeof (Lisp_Object));
*vec_ptr = vec;
}
else
inhibit_storing = 1;
There is also a possibly unwanted stylistic variation between fragment A &
C. In fragment C *len_ptr is assigned to before and in the if statement. In
fragment A *len_ptr is assigned to once, after the if statement.
As someone might say: Happy Hacking!
-Janek Bogucki
- buffer.c: overlays_at, overlays_in,
Janek Bogucki <=