GNU bug report logs -
#78042
31.0.50; Improper sequence of `before/after-change-functions` calls
Previous Next
Reported by: Stefan Monnier <monnier <at> iro.umontreal.ca>
Date: Thu, 24 Apr 2025 15:40:02 UTC
Severity: normal
Found in version 31.0.50
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
Full log
Message #20 received at 78042 <at> debbugs.gnu.org (full text, mbox):
>> diff --git a/src/coding.c b/src/coding.c
>> index 63b0dbeb18b..b4209986918 100644
>> --- a/src/coding.c
>> +++ b/src/coding.c
>> @@ -7363,6 +7363,7 @@ decode_coding (struct coding_system *coding)
>> struct ccl_spec cclspec;
>> int carryover;
>> int i;
>> + specpdl_ref count = SPECPDL_INDEX ();
>>
>> USE_SAFE_ALLOCA;
>>
>> @@ -7389,6 +7390,8 @@ decode_coding (struct coding_system *coding)
>>
>> undo_list = BVAR (current_buffer, undo_list);
>> bset_undo_list (current_buffer, Qt);
>> + /* The caller should run *-change-functions over the whole region. */
>> + specbind (Qinhibit_modification_hooks, Qt);
>> }
>
> How do we make sure this requirement is heeded to?
The rest of the code in this function modifies the buffer without
running any `before/after-change-functions` (except for things like
charset properties, which is what I'm trying to suppress), so if a caller
fails to run those hooks we'd know (and the above patch wouldn't make
it worse).
> And how do we document this incompatible change in NEWS?
It's a bug fix, not an incompatible change.
Stefan
This bug report was last modified 18 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.