]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix debugging of string-match-p errors
authorNoam Postavsky <npostavs@gmail.com>
Sat, 6 Aug 2016 02:11:00 +0000 (22:11 -0400)
committerEli Zaretskii <eliz@gnu.org>
Fri, 23 Sep 2016 14:03:43 +0000 (17:03 +0300)
* src/eval.c (call_debugger): Bind inhibit-changing-match-data to nil so
that debugger code that needs to do regexp match won't break
(Bug #23949, Bug #24166, Bug#16294).

This was backported from master
(cherry picked from commit 7fb75680b38fe0805c2ff7e9cca3bec8121ba984)

src/eval.c
src/search.c

index fe6460d53bbac9093c136ea55177f8c47f01868d..13a41a2ae200c4e7dddf72e8a6c01931f86b4744 100644 (file)
@@ -299,6 +299,11 @@ call_debugger (Lisp_Object arg)
   specbind (Qinhibit_redisplay, Qnil);
   specbind (Qinhibit_debugger, Qt);
 
+  /* If we are debugging an error while `inhibit-changing-match-data'
+     is bound to non-nil (e.g., within a call to `string-match-p'),
+     then make sure debugger code can still use match data.  */
+  specbind (Qinhibit_changing_match_data, Qnil);
+
 #if 0 /* Binding this prevents execution of Lisp code during
         redisplay, which necessarily leads to display problems.  */
   specbind (Qinhibit_eval_during_redisplay, Qt);
index b70f02097b727738a9ecf85e4a72b0a7b2c68d97..dc7e2d88603cce30ce34e2ff625b766a7fe62474 100644 (file)
@@ -3396,6 +3396,7 @@ or other such regexp constructs are not replaced with this.
 A value of nil (which is the normal value) means treat spaces literally.  */);
   Vsearch_spaces_regexp = Qnil;
 
+  DEFSYM (Qinhibit_changing_match_data, "inhibit-changing-match-data");
   DEFVAR_LISP ("inhibit-changing-match-data", Vinhibit_changing_match_data,
       doc: /* Internal use only.
 If non-nil, the primitive searching and matching functions