You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2015/01/16 19:35:57 UTC
svn commit: r1652485 - /subversion/trunk/subversion/libsvn_client/patch.c
Author: philip
Date: Fri Jan 16 18:35:56 2015
New Revision: 1652485
URL: http://svn.apache.org/r1652485
Log:
* subversion/libsvn_client/patch.c
(get_hunk_info): For the final search restrict the range to those
lines that could give a better match than any existing match.
Modified:
subversion/trunk/subversion/libsvn_client/patch.c
Modified: subversion/trunk/subversion/libsvn_client/patch.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/patch.c?rev=1652485&r1=1652484&r2=1652485&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/patch.c (original)
+++ subversion/trunk/subversion/libsvn_client/patch.c Fri Jan 16 18:35:56 2015
@@ -1789,13 +1789,22 @@ get_hunk_info(hunk_info_t **hi, patch_ta
< original_start - matched_line)))
matched_line = matched_line2;
- /* Search from start of file if there could be a better match. */
+ /* Search from before previous hunk if there could be a
+ better match. */
if (search_start > 1
&& (!matched_line
|| (matched_line > original_start
- && (matched_line - original_start > original_start))))
+ && (matched_line - original_start
+ > original_start - search_start))))
{
- SVN_ERR(seek_to_line(content, 1, scratch_pool));
+ svn_linenum_t search_start2 = 1;
+
+ if (matched_line
+ && matched_line - original_start < original_start)
+ search_start2
+ = original_start - (matched_line - original_start);
+
+ SVN_ERR(seek_to_line(content, search_start2, scratch_pool));
SVN_ERR(scan_for_match(&matched_line2, content, hunk, FALSE,
search_start - 1, fuzz,
ignore_whitespace, FALSE,