aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog8
-rw-r--r--lisp/progmodes/cc-engine.el19
2 files changed, 19 insertions, 8 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 90a2070c87..4f81fdab8e 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,11 @@
+2012-01-11 Alan Mackenzie <[email protected]>
+
+ Fix Emacs bug #10463 - put `widen's around the critical spots.
+
+ * progmodes/cc-engine.el (c-in-literal, c-literal-limits): put a
+ widen around each invocation of c-state-pp-to-literal. Remove an
+ unused let variable.
+
2012-01-11 Glenn Morris <[email protected]>
* dired-aux.el (dired-do-shell-command): Fix */? logic. (Bug#6561)
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index 392e5d1c37..2e0294341d 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -4211,12 +4211,14 @@ The last point calculated is cached if the cache is enabled, i.e. if
Note that this function might do hidden buffer changes. See the
comment at the start of cc-engine.el for more info."
- (let* ((safe-place (c-state-safe-place (point)))
- (lit (c-state-pp-to-literal safe-place (point))))
- (or (cadr lit)
- (and detect-cpp
- (save-excursion (c-beginning-of-macro))
- 'pound))))
+ (save-restriction
+ (widen)
+ (let* ((safe-place (c-state-safe-place (point)))
+ (lit (c-state-pp-to-literal safe-place (point))))
+ (or (cadr lit)
+ (and detect-cpp
+ (save-excursion (c-beginning-of-macro))
+ 'pound)))))
(defun c-literal-limits (&optional lim near not-in-delimiter)
"Return a cons of the beginning and end positions of the comment or
@@ -4236,9 +4238,10 @@ comment at the start of cc-engine.el for more info."
(save-excursion
(let* ((pos (point))
(lim (or lim (c-state-safe-place pos)))
- (pp-to-lit (c-state-pp-to-literal lim pos))
+ (pp-to-lit (save-restriction
+ (widen)
+ (c-state-pp-to-literal lim pos)))
(state (car pp-to-lit))
- (lit-type (cadr pp-to-lit))
(lit-limits (car (cddr pp-to-lit))))
(cond