]> git.eshelyaron.com Git - emacs.git/commitdiff
Clarify Freplace_match logic
authorLars Ingebrigtsen <larsi@gnus.org>
Sat, 3 Aug 2019 13:29:04 +0000 (15:29 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sat, 3 Aug 2019 13:29:04 +0000 (15:29 +0200)
* src/search.c (Freplace_match): Add some doc strings to clarify
the logic and do a minor clean up (bug#19208).

src/search.c

index fa574959fb41f972e35df8c84bfda8bf5fc6014f..2fa8b277195766b2aac28c0b04c22b52bdba6a44 100644 (file)
@@ -2397,11 +2397,15 @@ since only regular expressions have distinguished subexpressions.  */)
   else
     {
       CHECK_FIXNUM (subexp);
-      if (! (0 <= XFIXNUM (subexp) && XFIXNUM (subexp) < search_regs.num_regs))
-       args_out_of_range (subexp, make_fixnum (search_regs.num_regs));
       sub = XFIXNUM (subexp);
+      /* Sanity check to see whether the subexp is larger than the
+        allowed number of sub-regexps. */
+      if (sub >= 0 && sub > search_regs.num_regs)
+       args_out_of_range (subexp, make_fixnum (search_regs.num_regs));
     }
 
+  /* Sanity check to see whether the text to replace is present in the
+     buffer/string. */
   if (NILP (string))
     {
       if (search_regs.start[sub] < BEGV