From f77a39514687f57c947e9105172c3d3821a759cc Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Sat, 3 Aug 2019 15:29:04 +0200 Subject: [PATCH] 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). --- src/search.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 -- 2.39.2