Skip to content
Snippets Groups Projects
Commit 723b28e1 authored by Mirar (Pontus Hagland)'s avatar Mirar (Pontus Hagland)
Browse files

bugfix in diff3

Rev: lib/modules/Array.pmod:1.13
parent 881ccca7
No related branches found
No related tags found
No related merge requests found
...@@ -197,22 +197,24 @@ array(array(array(mixed))) diff3(array mid,array left,array right) ...@@ -197,22 +197,24 @@ array(array(array(mixed))) diff3(array mid,array left,array right)
[lmid,ldst]=diff(mid,left); [lmid,ldst]=diff(mid,left);
[rmid,rdst]=diff(mid,right); [rmid,rdst]=diff(mid,right);
werror(sprintf("%O\n",({rmid,rdst})));
array res=({}); array res=({});
int lpos=0,rpos=0; int lpos=0,rpos=0;
int l=0,r=0,n; int l=0,r=0,n;
array eq=({}); array eq=({});
int x; int x;
for (n=0; n<sizeof(mid);) for (n=0; ;)
{ {
while (lpos>=sizeof(lmid[l])) while (l<sizeof(lmid) && lpos>=sizeof(lmid[l]))
{ {
if (sizeof(ldst[l])>lpos) if (sizeof(ldst[l])>lpos)
res+=({({({}),ldst[l][lpos..],({})})}); res+=({({({}),ldst[l][lpos..],({})})});
l++; l++;
lpos=0; lpos=0;
} }
while (rpos>=sizeof(rmid[r])) while (r<sizeof(rmid) && rpos>=sizeof(rmid[r]))
{ {
if (sizeof(rdst[r])>rpos) if (sizeof(rdst[r])>rpos)
res+=({({({}),({}),rdst[r][rpos..]})}); res+=({({({}),({}),rdst[r][rpos..]})});
...@@ -220,6 +222,8 @@ array(array(array(mixed))) diff3(array mid,array left,array right) ...@@ -220,6 +222,8 @@ array(array(array(mixed))) diff3(array mid,array left,array right)
rpos=0; rpos=0;
} }
if (n==sizeof(mid)) break;
x=min(sizeof(lmid[l])-lpos,sizeof(rmid[r])-rpos); x=min(sizeof(lmid[l])-lpos,sizeof(rmid[r])-rpos);
if (lmid[l]==ldst[l] && rmid[r]==rdst[r]) if (lmid[l]==ldst[l] && rmid[r]==rdst[r])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment