OSDN Git Service

Retry to fix the bug that was attempted to fix in rev.8261(Fix 3way-diff algorithm...
authorsdottaka <none@none>
Tue, 21 Jan 2014 14:58:27 +0000 (23:58 +0900)
committersdottaka <none@none>
Tue, 21 Jan 2014 14:58:27 +0000 (23:58 +0900)
--HG--
branch : stable

Src/Diff3.h
Src/DiffWrapper.cpp
Src/stringdiffs.cpp

index de31e71..ddbf4d2 100644 (file)
@@ -179,24 +179,10 @@ size_t Make3wayDiff(std::vector<Element>& diff3, const std::vector<Element>& dif
                        dr3.op = OP_1STONLY;\r
                else \r
                {\r
-                       if (diff10itmp - diff10i == diff12itmp - diff12i)\r
-                       {\r
-                               dr3.op = OP_2NDONLY;\r
-                               for (size_t i = 0; i < diff10itmp - diff10i; ++i)\r
-                               {\r
-                                       dr10 = diff10.at(diff10i + i);\r
-                                       dr12 = diff12.at(diff12i + i);\r
-                                       if (!cmpfunc(dr10, dr12))\r
-                                       {\r
-                                               dr3.op = OP_DIFF;\r
-                                               break;\r
-                                       }\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
+                       if (!cmpfunc(dr3))\r
                                dr3.op = OP_DIFF;\r
-                       }\r
+                       else\r
+                               dr3.op = OP_2NDONLY;\r
                }\r
 \r
                if (ignore_regexp_list)\r
index d2114f3..6dbc658 100644 (file)
@@ -1316,12 +1316,12 @@ struct Comp02Functor
                inf10_(inf10), inf12_(inf12)
        {
        }
-       bool operator()(const DiffRangeInfo &dr10, const DiffRangeInfo &dr12)
+       bool operator()(const DiffRangeInfo &dr3)
        {
-               int line0 = dr10.begin[1];
-               int line2 = dr12.begin[1];
-               int line0end = dr10.end[1];
-               int line2end = dr12.end[1];
+               int line0 = dr3.begin[0];
+               int line2 = dr3.begin[2];
+               int line0end = dr3.end[0];
+               int line2end = dr3.end[2];
                if (line0end - line0 != line2end - line2)
                        return false;
                const char **linbuf0 = inf10_[1].linbuf + inf10_[1].linbuf_base;
index c0ffb99..a5b557d 100644 (file)
@@ -71,20 +71,20 @@ struct Comp02Functor
                strs_(strs), case_sensitive_(case_sensitive)
        {
        }
-       bool operator()(const wdiff &wd10, const wdiff &wd12)
+       bool operator()(const wdiff &wd3)
        {
-               size_t wlen0 = wd10.end[1] - wd10.begin[1] + 1;
-               size_t wlen2 = wd12.end[1] - wd12.begin[1] + 1;
+               size_t wlen0 = wd3.end[0] - wd3.begin[0] + 1;
+               size_t wlen2 = wd3.end[2] - wd3.begin[2] + 1;
                if (wlen0 != wlen2)
                        return false;
                if (case_sensitive_)
                {
-                       if (memcmp(&strs_[0][wd10.begin[1]], &strs_[2][wd12.begin[1]], wlen0 * sizeof(TCHAR)) != 0)
+                       if (memcmp(&strs_[0][wd3.begin[0]], &strs_[2][wd3.begin[2]], wlen0 * sizeof(TCHAR)) != 0)
                                return false;
                }
                else
                {
-                       if (_tcsnicmp(&strs_[0][wd10.begin[1]], &strs_[2][wd12.begin[1]], wlen0) != 0)
+                       if (_tcsnicmp(&strs_[0][wd3.begin[0]], &strs_[2][wd3.begin[2]], wlen0) != 0)
                                return false;
                }
                return true;