Because looking_at_1 sets search_regs and last_thing_searched by differing criteria. This patch makes them consistent in my test case.
diff --git a/src/insdel.c b/src/insdel.c
index 8029291..db2147f 100644
--- a/src/insdel.c
+++ b/src/insdel.c
diff --git a/src/search.c b/src/search.c
index ea36133..60658c8 100644
--- a/src/search.c
+++ b/src/search.c
@@ -336,10 +323,9 @@ looking_at_1 (Lisp_Object string, bool posix)
search_regs.end[i]
= BYTE_TO_CHAR (search_regs.end[i] + BEGV_BYTE);
}
-
- /* Set last_thing_searched only when match data is changed. */
- if (NILP (Vinhibit_changing_match_data))
+ /* Set last_thing_searched only when match data is changed. */
XSETBUFFER (last_thing_searched, current_buffer);
+ }
return val;
}