From: Lars Ingebrigtsen Date: Sat, 3 Aug 2019 13:29:04 +0000 (+0200) Subject: Clarify Freplace_match logic X-Git-Tag: emacs-27.0.90~1734 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f77a39514687f57c947e9105172c3d3821a759cc;p=emacs.git Clarify Freplace_match logic * src/search.c (Freplace_match): Add some doc strings to clarify the logic and do a minor clean up (bug#19208). --- diff --git a/src/search.c b/src/search.c index fa574959fb4..2fa8b277195 100644 --- a/src/search.c +++ b/src/search.c @@ -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