From: Koosha KM Date: Mon, 25 Aug 2014 21:30:58 +0000 (+0000) Subject: Bug 1054642: quoteUrls() enters an infinite loop with a list of nonexistent bug ids... X-Git-Tag: bugzilla-4.5.6~49 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0922b44649075532dea64bdc6469446a34f5219f;p=thirdparty%2Fbugzilla.git Bug 1054642: quoteUrls() enters an infinite loop with a list of nonexistent bug ids to be linkified r=glob,a=sgreen --- diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index 96896b47eb..7e35278579 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -263,28 +263,23 @@ sub quoteUrls { my $bugs_re = qr/\Q$bugs_word\E$s*\#?$s* \d+(?:$s*,$s*\#?$s*\d+)+/ix; - while ($text =~ m/($bugs_re)/g) { - my $offset = $-[0]; - my $length = $+[0] - $-[0]; - my $match = $1; + $text =~ s{($bugs_re)}{ + my $match = $1; $match =~ s/((?:#$s*)?(\d+))/$bug_link_func->($2, $1);/eg; - # Replace the old string with the linkified one. - substr($text, $offset, $length) = $match; - } + $match; + }eg; my $comments_word = template_var('terms')->{comments}; my $comments_re = qr/(?:comments|\Q$comments_word\E)$s*\#?$s* \d+(?:$s*,$s*\#?$s*\d+)+/ix; - while ($text =~ m/($comments_re)/g) { - my $offset = $-[0]; - my $length = $+[0] - $-[0]; - my $match = $1; + $text =~ s{($comments_re)}{ + my $match = $1; $match =~ s|((?:#$s*)?(\d+))|$1|g; - substr($text, $offset, $length) = $match; - } + $match; + }eg; # Old duplicate markers. These don't use $bug_word because they are old # and were never customizable.