Make object-intervals linear instead of quadratic
* src/fns.c (collect_interval, Fobject_intervals): Build the returned list in reverse instead of appending single elements.
This commit is contained in:
parent
3869944bb4
commit
cd0855cbd8
1 changed files with 7 additions and 7 deletions
14
src/fns.c
14
src/fns.c
|
@ -5255,11 +5255,11 @@ static void
|
|||
collect_interval (INTERVAL interval, void *arg)
|
||||
{
|
||||
Lisp_Object *collector = arg;
|
||||
*collector =
|
||||
nconc2 (*collector,
|
||||
list1(list3 (make_fixnum (interval->position),
|
||||
make_fixnum (interval->position + LENGTH (interval)),
|
||||
interval->plist)));
|
||||
*collector = Fcons (list3 (make_fixnum (interval->position),
|
||||
make_fixnum (interval->position
|
||||
+ LENGTH (interval)),
|
||||
interval->plist),
|
||||
*collector);
|
||||
}
|
||||
|
||||
|
||||
|
@ -6312,7 +6312,6 @@ Altering this copy does not change the layout of the text properties
|
|||
in OBJECT. */)
|
||||
(register Lisp_Object object)
|
||||
{
|
||||
Lisp_Object collector = Qnil;
|
||||
INTERVAL intervals;
|
||||
|
||||
if (STRINGP (object))
|
||||
|
@ -6325,8 +6324,9 @@ in OBJECT. */)
|
|||
if (! intervals)
|
||||
return Qnil;
|
||||
|
||||
Lisp_Object collector = Qnil;
|
||||
traverse_intervals (intervals, 0, collect_interval, &collector);
|
||||
return collector;
|
||||
return Fnreverse (collector);
|
||||
}
|
||||
|
||||
DEFUN ("line-number-at-pos", Fline_number_at_pos,
|
||||
|
|
Loading…
Add table
Reference in a new issue