mirror of
https://github.com/php/php-src.git
synced 2026-04-26 09:28:21 +02:00
fix and regression test for Bug #16473
This commit is contained in:
+12
-14
@@ -40,33 +40,31 @@ static int reference_levdist(const char *s1, int l1,
|
||||
if((l1>LEVENSHTEIN_MAX_LENTH)||(l2>LEVENSHTEIN_MAX_LENTH))
|
||||
return -1;
|
||||
|
||||
if(!(p1=emalloc(l2*sizeof(int)))) {
|
||||
if(!(p1=emalloc((l2+1)*sizeof(int)))) {
|
||||
return -2;
|
||||
}
|
||||
if(!(p2=emalloc(l2*sizeof(int)))) {
|
||||
if(!(p2=emalloc((l2+1)*sizeof(int)))) {
|
||||
free(p1);
|
||||
return -2;
|
||||
}
|
||||
|
||||
p1[0]=(s1[0]==s2[0])?0:cost_rep;
|
||||
for(i2=0;i2<=l2;i2++)
|
||||
p1[i2] = i2*cost_ins;
|
||||
|
||||
for(i2=1;i2<l2;i2++)
|
||||
p1[i2]=i2*cost_ins;
|
||||
|
||||
for(i1=1;i1<l1;i1++)
|
||||
for(i1=0;i1<l1;i1++)
|
||||
{
|
||||
p2[0]=i1*cost_del;
|
||||
for(i2=1;i2<l2;i2++)
|
||||
p2[0]=p1[0]+cost_del;
|
||||
for(i2=0;i2<l2;i2++)
|
||||
{
|
||||
c0=p1[i2-1]+((s1[i1]==s2[i2])?0:cost_rep);
|
||||
c1=p1[i2]+cost_del; if(c1<c0) c0=c1;
|
||||
c2=p2[i2-1]+cost_ins; if(c2<c0) c0=c2;
|
||||
p2[i2]=c0;
|
||||
c0=p1[i2]+((s1[i1]==s2[i2])?0:cost_rep);
|
||||
c1=p1[i2+1]+cost_del; if(c1<c0) c0=c1;
|
||||
c2=p2[i2]+cost_ins; if(c2<c0) c0=c2;
|
||||
p2[i2+1]=c0;
|
||||
}
|
||||
tmp=p1; p1=p2; p2=tmp;
|
||||
}
|
||||
|
||||
c0=p1[l2-1];
|
||||
c0=p1[l2];
|
||||
|
||||
efree(p1);
|
||||
efree(p2);
|
||||
|
||||
@@ -47,6 +47,12 @@ $n += test_me("bug #6562", 1, "ddebug", "debug");
|
||||
$n += test_me("bug #6562", 2, "debbbug", "debug");
|
||||
$n += test_me("bug #6562", 1, "debugging", "debuging");
|
||||
|
||||
$n += test_me("bug #16473", 2, "a", "bc");
|
||||
$n += test_me("bug #16473", 2, "xa", "xbc");
|
||||
$n += test_me("bug #16473", 2, "xax", "xbcx");
|
||||
$n += test_me("bug #16473", 2, "ax", "bcx");
|
||||
|
||||
|
||||
echo ($n==0)?"all passed\n":"$n failed\n";
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user