]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix handling of buffer relocation in regex.c functions
authorEli Zaretskii <eliz@gnu.org>
Sun, 23 Oct 2016 19:09:43 +0000 (22:09 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sun, 23 Oct 2016 19:09:43 +0000 (22:09 +0300)
* src/search.c (search_buffer): Updated the base pointer to buffer
text after the call to re_search_2.  (Bug#24358)

src/search.c

index ec5a1d7733fbc1327607466b1ae01a1a7505ee02..5c04916f92e3cee1786719061ab3614a626f23bf 100644 (file)
@@ -1233,6 +1233,8 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte,
                              ? &search_regs : &search_regs_1),
                             /* Don't allow match past current point */
                             pos_byte - BEGV_BYTE);
+         /* Update 'base' due to possible relocation inside re_search_2.  */
+         base = current_buffer->text->beg;
          if (val == -2)
            {
              matcher_overflow ();
@@ -1279,6 +1281,8 @@ search_buffer (Lisp_Object string, ptrdiff_t pos, ptrdiff_t pos_byte,
                             (NILP (Vinhibit_changing_match_data)
                              ? &search_regs : &search_regs_1),
                             lim_byte - BEGV_BYTE);
+         /* Update 'base' due to possible relocation inside re_search_2.  */
+         base = current_buffer->text->beg;
          if (val == -2)
            {
              matcher_overflow ();