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 #26 received at 78042 <at> debbugs.gnu.org (full text, mbox):
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Cc: 78042 <at> debbugs.gnu.org
> Date: Fri, 25 Apr 2025 13:39:28 -0400
>
> >> 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).
I was asking how will we be able to make sure the caller does run the
modification hooks. I don't quite understand what you mean by "we'd
know". Know how and by what signs?
> > And how do we document this incompatible change in NEWS?
>
> It's a bug fix, not an incompatible change.
We now require callers to do something they didn't have to do before,
or am I missing something?
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.