Subject: Re: bug#7181: 24.0.50; args-out-of-range while reverting C++ header file

From: Alan Mackenzie <[email-masked]>
Date: Sat, 9 Oct 2010 21:13:32 +0000

Hi, Óscar,

On Sat, Oct 09, 2010 at 03:56:39PM +0200, Óscar Fuentes wrote:
> With the attached files the problem can be reproduced predictability:
> 
> Save the attached files b.h.master and b.h.next to a directory and cd to
> it.
> 
> $ emacs -Q &
> $ cp b.h.master b.h
> C-x C-f b.h
> $ cp b.h.next b.h
> M-x revert-buffer
> 
> and the args-out-of-range error pops:
> 
> c-clear-char-property-with-value-function: Args out of range: 166, 453
> 
> I was unable to try with the latest Emacs sources because the build is
> broken. My Emacs is from the 16 September.
> 

Thanks for the recipe.  I turned on debug-on-error and got this
traceback:

Debugger entered--Lisp error: (args-out-of-range 166 453)
  remove-text-properties(166 453 (category))
  c-clear-char-property-with-value-function(1 453 category c-cpp-delimiter)
  c-neutralize-syntax-in-and-mark-CPP(94 94 286)
  c-after-change(94 94 286) <<======================================
  insert-file-contents("/home/acm/b.h" t nil nil t)
  revert-buffer(t)
  call-interactively(revert-buffer nil nil)

c-after-change is on the after-change-functions hook.  The values of BEG
END OLD-LEN it is being passed look utterly wrong.  BEG and END should
delimit the entire buffer and OLD-LEN should be the length of the
previous buffer.  Surely?

-- 
Alan Mackenzie (Nuremberg, Germany).