From: Alan Mackenzie <acm@muc.de> Date: Thu, 21 Jan 2010 21:45:01 +0000 (+0000) Subject: Fix a situation where deletion of a cpp construct throws an error. X-Git-Tag: emacs-pretest-23.1.92~30^2~3^2~24 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3e8f7d9196c6c5ccac68bfe4c083e541fc9922e0;p=emacs.git Fix a situation where deletion of a cpp construct throws an error. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c3c95a95aa7..a308a571874 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2010-01-21 Alan Mackenzie <acm@muc.de> + + Fix a situation where deletion of a cpp construct throws an error. + * progmodes/cc-engine.el (c-invalidate-state-cache): Before + invoking c-with-all-but-one-cpps-commented-out, check that the + special cpp construct is still in the buffer. + (c-parse-state): Record the special cpp with markers, not numbers. + 2010-01-21 Kenichi Handa <handa@m17n.org> * textmodes/sgml-mode.el (sgml-maybe-name-self): No need to diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 0e6358aeee1..9d0af1d53ce 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -2996,9 +2996,11 @@ comment at the start of cc-engine.el for more info." ;; containing point. We can then call `c-invalidate-state-cache-1' without ;; worrying further about macros and template delimiters. (c-with-<->-as-parens-suppressed - (if c-state-old-cpp-beg + (if (and c-state-old-cpp-beg + (< c-state-old-cpp-beg here)) (c-with-all-but-one-cpps-commented-out - c-state-old-cpp-beg c-state-old-cpp-end + c-state-old-cpp-beg + (min c-state-old-cpp-end here) (c-invalidate-state-cache-1 here)) (c-with-cpps-commented-out (c-invalidate-state-cache-1 here))))) @@ -3029,8 +3031,9 @@ comment at the start of cc-engine.el for more info." (c-parse-state-1)) (c-with-cpps-commented-out (c-parse-state-1)))) - (setq c-state-old-cpp-beg here-cpp-beg - c-state-old-cpp-end here-cpp-end)))) + (setq c-state-old-cpp-beg (and here-cpp-beg (copy-marker here-cpp-beg t)) + c-state-old-cpp-end (and here-cpp-end (copy-marker here-cpp-end t))) + ))) ;; Debug tool to catch cache inconsistencies. This is called from ;; 000tests.el.