Subject: 25.1.50; revert-buffer error in CC mode
From: Richard Copley <[email-masked]>
To: "[email-masked]" <[email-masked]>
Date: Thu, 28 Jul 2016 14:50:09 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

When editing C++ files, if I change visited files outside emacs (for
example, by doing "svn revert -R ."), then visit one of the changed
files and accept the offer to revert the buffer, in some cases there
is an error (see below) and the buffer contents are corrupted (chunks
are missing because the revert operation was interrupted).

I haven't been able to reduce this to a recipe and I don't know if
the issue is present in the emacs-25 branch and/or in "emacs -Q".

Here is an example backtrace (control characters replaced):

Debugger entered--Lisp error: (error "Invalid search bound (wrong side
of point)")
  re-search-forward("[0-9a-fA-F]'[0-9a-fA-F]" 175 t)
  c-before-after-change-digit-quote(65 65 1625)
  #[(fn) "^H    \n^K#\207" [fn beg end old-len]
4](c-before-after-change-digit-quote)
  mapc(#[(fn) "^H    \n^K#\207" [fn beg end old-len] 4]
(c-depropertize-new-text c-extend-font-lock-region-for-macros
c-before-after-change-digit-quote c-after-change-re-mark-raw-strings
c-neutralize-syntax-in-and-mark-CPP c-restore-<>-properties
c-change-expand-fl-region))
  c-after-change(65 65 1625)
  insert-file-contents("g:/projects/polymorph/working3/src/settings.cpp"
t nil nil t)
  revert-buffer-insert-file-contents--default-function("g:/projects/polymorph/working3/src/settings.cpp"
nil)
  revert-buffer--default(t t)
  revert-buffer(t t)
  find-file-noselect("g:/projects/polymorph/working3/src/settings.cpp")
  compilation-find-file(#<marker at 1397 in *grep*> "settings.cpp" nil)
  apply(compilation-find-file #<marker at 1397 in *grep*>
"settings.cpp" nil nil)
  compilation-next-error-function(1 nil)
  next-error(nil)
  funcall-interactively(next-error nil)
  call-interactively(next-error nil nil)
  command-execute(next-error)

In GNU Emacs 25.1.50.1 (x86_64-w64-mingw32)
 of 2016-07-25 built on MACHINE
Repository revision: 6dc6b0079ed3632ed9082bc79d8cb6fc96d33f43
Windowing system distributor 'Microsoft Corp.', version 10.0.10586
Recent messages:
Undo!
Saving file g:/projects/polymorph/working3/src/model.cpp...
Wrote g:/projects/polymorph/working3/src/model.cpp
Reverted 'model.cpp'
Undo!
Saving file g:/projects/polymorph/working3/src/model.cpp...
Wrote g:/projects/polymorph/working3/src/model.cpp
Reverted 'model.cpp'
Undo!
Entering debugger...

Configured using:
 'configure --prefix /C/emacs/emacs-20160725-215227 --with-modules
 --without-imagemagick --disable-dependency-tracking
 --enable-locallisppath=%emacs_dir%/../site-lisp CFLAGS=-O3
 CPPFLAGS=-D_WIN32_WINNT=_WIN32_WINNT_WIN7'

Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND DBUS NOTIFY ACL GNUTLS LIBXML2 ZLIB
TOOLKIT_SCROLL_BARS MODULES

Important settings:
  value of $LANG: ENG
  locale-coding-system: cp1252

Major mode: Debugger

Minor modes in effect:
  diff-auto-refine-mode: t
  shell-dirtrack-mode: t
  global-hi-lock-mode: t
  hi-lock-mode: t
  show-paren-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  line-number-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug sendmail debug cus-start cus-load
log-edit message subr-x puny format-spec rfc822 mml mml-sec epa derived
epg gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr
mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log smerge-mode
hippie-exp cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align
cc-engine cc-vars cc-defs cl hl-line ffap vc-cvs vc-rcs dired
dired-loaddefs view diff-mode misearch multi-isearch jka-compr shell
pcomplete vc-svn perl-mode ediff-merg ediff-wind ediff-diff ediff-mult
ediff-help ediff-init ediff-util ediff hi-lock grep compile comint
ansi-color ring paren server pascal opascal finder-inf tex-site info
package epg-config url-handlers url-parse auth-source cl-seq eieio
eieio-core cl-macs eieio-loaddefs password-cache url-vars seq byte-opt
gv bytecomp byte-compile cl-extra help-mode easymenu cconv cl-loaddefs
pcase cl-lib advice time-date mule-util tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel dos-w32 ls-lisp disp-table
term/w32-win w32-win w32-vars term/common-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list newcomment elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow timer select scroll-bar
mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame
cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian
slovak czech european ethiopic indian cyrillic chinese charscript
case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote w32notify dbusbind w32
multi-tty make-network-process emacs)

Memory information:
((conses 16 309928 44864)
 (symbols 56 34963 0)
 (miscs 48 368 1555)
 (strings 32 62494 6202)
 (string-bytes 1 2004295)
 (vectors 16 28361)
 (vector-slots 8 650573 30264)
 (floats 8 270 254)
 (intervals 56 12859 249)
 (buffers 976 83))