Patch 8.0.1046
Problem: Code duplication in diff mode.
Solution: Use diff_equal_char() also in diff_cmp(). (Rick Howe)
Files: src/diff.c
*** ../vim-8.0.1045/src/diff.c 2017-09-02 18:01:46.422018216 +0200
--- src/diff.c 2017-09-03 15:03:52.784327027 +0200
***************
*** 1661,1666 ****
--- 1661,1700 ----
}
/*
+ * Compare the characters at "p1" and "p2". If they are equal (possibly
+ * ignoring case) return TRUE and set "len" to the number of bytes.
+ */
+ static int
+ diff_equal_char(char_u *p1, char_u *p2, int *len)
+ {
+ #ifdef FEAT_MBYTE
+ int l = (*mb_ptr2len)(p1);
+
+ if (l != (*mb_ptr2len)(p2))
+ return FALSE;
+ if (l > 1)
+ {
+ if (STRNCMP(p1, p2, l) != 0
+ && (!enc_utf8
+ || !(diff_flags & DIFF_ICASE)
+ || utf_fold(utf_ptr2char(p1))
+ != utf_fold(utf_ptr2char(p2))))
+ return FALSE;
+ *len = l;
+ }
+ else
+ #endif
+ {
+ if ((*p1 != *p2)
+ && (!(diff_flags & DIFF_ICASE)
+ || TOLOWER_LOC(*p1) != TOLOWER_LOC(*p2)))
+ return FALSE;
+ *len = 1;
+ }
+ return TRUE;
+ }
+
+ /*
* Compare strings "s1" and "s2" according to 'diffopt'.
* Return non-zero when they are different.
*/
***************
*** 1689,1718 ****
}
else
{
! #ifdef FEAT_MBYTE
! l = (*mb_ptr2len)(p1);
! if (l != (*mb_ptr2len)(p2))
break;
! if (l > 1)
! {
! if (STRNCMP(p1, p2, l) != 0
! && (!enc_utf8
! || !(diff_flags & DIFF_ICASE)
! || utf_fold(utf_ptr2char(p1))
! != utf_fold(utf_ptr2char(p2))))
! break;
! p1 += l;
! p2 += l;
! }
! else
! #endif
! {
! if (*p1 != *p2 && (!(diff_flags & DIFF_ICASE)
! || TOLOWER_LOC(*p1) != TOLOWER_LOC(*p2)))
! break;
! ++p1;
! ++p2;
! }
}
}
--- 1723,1732 ----
}
else
{
! if (!diff_equal_char(p1, p2, &l))
break;
! p1 += l;
! p2 += l;
}
}
***************
*** 1950,1989 ****
}
/*
- * Compare the characters at "p1" and "p2". If they are equal (possibly
- * ignoring case) return TRUE and set "len" to the number of bytes.
- */
- static int
- diff_equal_char(char_u *p1, char_u *p2, int *len)
- {
- #ifdef FEAT_MBYTE
- int l = (*mb_ptr2len)(p1);
-
- if (l != (*mb_ptr2len)(p2))
- return FALSE;
- if (l > 1)
- {
- if (STRNCMP(p1, p2, l) != 0
- && (!enc_utf8
- || !(diff_flags & DIFF_ICASE)
- || utf_fold(utf_ptr2char(p1))
- != utf_fold(utf_ptr2char(p2))))
- return FALSE;
- *len = l;
- }
- else
- #endif
- {
- if ((*p1 != *p2)
- && (!(diff_flags & DIFF_ICASE)
- || TOLOWER_LOC(*p1) != TOLOWER_LOC(*p2)))
- return FALSE;
- *len = 1;
- }
- return TRUE;
- }
-
- /*
* Find the difference within a changed line.
* Returns TRUE if the line was added, no other buffer has it.
*/
--- 1964,1969 ----
*** ../vim-8.0.1045/src/version.c 2017-09-03 14:30:58.229077337 +0200
--- src/version.c 2017-09-03 15:02:27.188879430 +0200
***************
*** 771,772 ****
--- 771,774 ----
{ /* Add new patch number below this line */
+ /**/
+ 1046,
/**/
--
hundred-and-one symptoms of being an internet addict:
58. You turn on your computer and turn off your wife.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.