aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2016-10-23 22:09:43 +0300
committerEli Zaretskii2016-10-23 22:09:43 +0300
commitee04aedc723b035eedaf975422d4eb242894121b (patch)
tree6c3255640228ac4ae14247c50982354f82cf702c
parent71ca4f6a43bad06192cbc4bb8c7a2d69c179b7b0 (diff)
downloademacs-ee04aedc723b035eedaf975422d4eb242894121b.tar.gz
emacs-ee04aedc723b035eedaf975422d4eb242894121b.zip
Fix handling of buffer relocation in regex.c functions
* src/search.c (search_buffer): Updated the base pointer to buffer text after the call to re_search_2. (Bug#24358)
-rw-r--r--src/search.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/search.c b/src/search.c
index ec5a1d7733f..5c04916f92e 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1233,6 +1233,8 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte,
1233 ? &search_regs : &search_regs_1), 1233 ? &search_regs : &search_regs_1),
1234 /* Don't allow match past current point */ 1234 /* Don't allow match past current point */
1235 pos_byte - BEGV_BYTE); 1235 pos_byte - BEGV_BYTE);
1236 /* Update 'base' due to possible relocation inside re_search_2. */
1237 base = current_buffer->text->beg;
1236 if (val == -2) 1238 if (val == -2)
1237 { 1239 {
1238 matcher_overflow (); 1240 matcher_overflow ();
@@ -1279,6 +1281,8 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte,
1279 (NILP (Vinhibit_changing_match_data) 1281 (NILP (Vinhibit_changing_match_data)
1280 ? &search_regs : &search_regs_1), 1282 ? &search_regs : &search_regs_1),
1281 lim_byte - BEGV_BYTE); 1283 lim_byte - BEGV_BYTE);
1284 /* Update 'base' due to possible relocation inside re_search_2. */
1285 base = current_buffer->text->beg;
1282 if (val == -2) 1286 if (val == -2)
1283 { 1287 {
1284 matcher_overflow (); 1288 matcher_overflow ();