[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#16585: c-invalidate-state-cache fails if called when narrowed
From: |
Alan Mackenzie |
Subject: |
bug#16585: c-invalidate-state-cache fails if called when narrowed |
Date: |
Wed, 5 Feb 2014 23:16:07 +0000 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Hi, Daniel.
On Tue, Jan 28, 2014 at 06:09:04PM -0800, Daniel Colascione wrote:
> c-invalidate-state-cache can fail if called in a narrowed region: we end
> up calling c-clear-char-property for bob even if that's before
> point-min, causing remote-text-properties to raise (args-out-of-range 1 2).
> We get into this situation when expanding yasnippet snippets; we're
> calling c-invalidate-state-cache from c-before-change.
> To repro manually, first write this to some buffer.
> #include <stdio.h>
> void foo() {
> }
> Then (this is important) run M-x c-mode. After starting the mode, move
> point to inside foo's body and eval (save-restriction (narrow-to-region
> (point-at-bol) (point-at-eol)) (c-invalidate-state-cache (point))). You
> should break into the debugger.
> The patch below seems correct and fixes the problem for me, but it'd be
> nice if Alan could take a look at it before I push it to trunk. The
> version of c-invalidate-state-cache in cc-mode trunk is very different.
I think I'd like to check that nothing can go awry in
c-invalidate-state-cache-1 with the widened buffer. Give me a day or
two.
--
Alan Mackenzie (Nuremberg, Germany).