aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoam Postavsky2016-08-05 22:11:00 -0400
committerEli Zaretskii2016-09-23 17:03:43 +0300
commit3f539c0013cf0f64b71e58d288ff1e53211fba2d (patch)
tree3d9480af0c472b2815d62ea72f7ae3d2573e9048
parentf746a92c3c6d12c09ae07ec24a4a1199aa7a0364 (diff)
downloademacs-3f539c0013cf0f64b71e58d288ff1e53211fba2d.tar.gz
emacs-3f539c0013cf0f64b71e58d288ff1e53211fba2d.zip
Fix debugging of string-match-p errors
* 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)
-rw-r--r--src/eval.c5
-rw-r--r--src/search.c1
2 files changed, 6 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c
index fe6460d53bb..13a41a2ae20 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -299,6 +299,11 @@ call_debugger (Lisp_Object arg)
299 specbind (Qinhibit_redisplay, Qnil); 299 specbind (Qinhibit_redisplay, Qnil);
300 specbind (Qinhibit_debugger, Qt); 300 specbind (Qinhibit_debugger, Qt);
301 301
302 /* If we are debugging an error while `inhibit-changing-match-data'
303 is bound to non-nil (e.g., within a call to `string-match-p'),
304 then make sure debugger code can still use match data. */
305 specbind (Qinhibit_changing_match_data, Qnil);
306
302#if 0 /* Binding this prevents execution of Lisp code during 307#if 0 /* Binding this prevents execution of Lisp code during
303 redisplay, which necessarily leads to display problems. */ 308 redisplay, which necessarily leads to display problems. */
304 specbind (Qinhibit_eval_during_redisplay, Qt); 309 specbind (Qinhibit_eval_during_redisplay, Qt);
diff --git a/src/search.c b/src/search.c
index b70f02097b7..dc7e2d88603 100644
--- a/src/search.c
+++ b/src/search.c
@@ -3396,6 +3396,7 @@ or other such regexp constructs are not replaced with this.
3396A value of nil (which is the normal value) means treat spaces literally. */); 3396A value of nil (which is the normal value) means treat spaces literally. */);
3397 Vsearch_spaces_regexp = Qnil; 3397 Vsearch_spaces_regexp = Qnil;
3398 3398
3399 DEFSYM (Qinhibit_changing_match_data, "inhibit-changing-match-data");
3399 DEFVAR_LISP ("inhibit-changing-match-data", Vinhibit_changing_match_data, 3400 DEFVAR_LISP ("inhibit-changing-match-data", Vinhibit_changing_match_data,
3400 doc: /* Internal use only. 3401 doc: /* Internal use only.
3401If non-nil, the primitive searching and matching functions 3402If non-nil, the primitive searching and matching functions