Subject: bug#10941: [24.0.93.3] cc-mode: error in message buffer when "typing fast", characters eaten

From: Alan Mackenzie <[email-masked]>
Date: Thu, 29 Mar 2012 21:48:51 +0000

Hi, Paul.

Thanks for this report.  I can reproduce the error.  However, looking at
the code, it "can't possibly happen".  :-(  A few questions:

> Sometimes (quite often) when opening a different syntax region --- a
> quoted string, or block comment --- in C++ mode, the first character
> after it gets eaten with some error message shown in the echo area.  I
> managed to create a surefire (at least here) way to reproduce it.

What exactly do you mean by "opening a different syntax region"?  Do you
mean moving point into it, or scrolling to see it?

> * save the attached file as 'test.cpp' (it is quite large, but when I
>   tried to shorten it substantially, error disappeared);

Aha!  It's 3991 bytes long.  I'm going to try a binary chop on the
length.  I have a strange feeling the threshold length of the file
(before insertion of "/* ") will be 2048.

> * start Emacs as 'emacs -Q test.cpp';

> * issue Elisp command right at the start of the buffer with M-: (this
>   emulates fast typing):

>       (progn (insert "/*") (insert " "))

>   note that two separate inserts are essential, with one "/* " error
>   is not triggered;

OK.  I have a suspicion it could be something like two
before-change-functions being invoked without the after-change-function
which should come between them.

Strangely, though, once this error has happened, it doesn't happen again
in the same Emacs session, even if the buffer is killed and the file
reloaded.

> * observer the following error:

>       Debugger entered--Lisp error: (error "Invalid search bound
>       (wrong side of point)")

> Full Emacs version: GNU Emacs 24.0.93.3 (x86_64-unknown-linux-gnu,
> GTK+ Version 2.24.10) of 2012-02-25 on gonzo

Paul

-- 
Alan Mackenzie (Nuremberg, Germany).