GNU bug report logs -
#48264
28.0.50; Changing the default for DEFVAR_PER_BUFFER variables takes O(#buffers) time
Previous Next
Full log
View this message in rfc822 format
These loops iterate over the same things with the same check.
* src/buffer.c (reset_buffer_local_variables): Combine loops.
---
src/buffer.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/src/buffer.c b/src/buffer.c
index efc85bf378..4336e10a27 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1006,7 +1006,7 @@ reset_buffer (register struct buffer *b)
static void
reset_buffer_local_variables (struct buffer *b, bool permanent_too)
{
- int offset, i;
+ int offset;
/* Reset the major mode to Fundamental, together with all the
things that depend on the major mode.
@@ -1100,10 +1100,6 @@ reset_buffer_local_variables (struct buffer *b, bool permanent_too)
}
}
- for (i = 0; i < last_per_buffer_idx; ++i)
- if (permanent_too || buffer_permanent_local_flags[i] == 0)
- SET_PER_BUFFER_VALUE_P (b, i, 0);
-
/* For each slot that has a default value, copy that into the slot. */
FOR_EACH_PER_BUFFER_OBJECT_AT (offset)
{
@@ -1111,7 +1107,10 @@ reset_buffer_local_variables (struct buffer *b, bool permanent_too)
if ((BVAR_HAS_DEFAULT_VALUE_P (offset)
&& (permanent_too
|| buffer_permanent_local_flags[idx] == 0)))
- set_per_buffer_value (b, offset, per_buffer_default (offset));
+ {
+ SET_PER_BUFFER_VALUE_P (b, idx, 0);
+ set_per_buffer_value (b, offset, per_buffer_default (offset));
+ }
}
}
--
2.31.1
This bug report was last modified 2 years and 289 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.