Mercurial > emacs
diff lisp/progmodes/cc-engine.el @ 106948:719b13c3b762
Fix a situation where deletion of a cpp construct throws an error.
author | Alan Mackenzie <acm@muc.de> |
---|---|
date | Thu, 21 Jan 2010 21:45:01 +0000 |
parents | 855f55740303 |
children | 1786f2e6a856 |
line wrap: on
line diff
--- a/lisp/progmodes/cc-engine.el Thu Jan 21 09:03:10 2010 -0500 +++ b/lisp/progmodes/cc-engine.el Thu Jan 21 21:45:01 2010 +0000 @@ -2996,9 +2996,11 @@ ;; 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 @@ (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.