]> granicus.if.org Git - php/commitdiff
a little less optimized, but no dirty tricks anymore
authorHartmut Holzgraefe <hholzgra@php.net>
Tue, 23 May 2000 20:07:32 +0000 (20:07 +0000)
committerHartmut Holzgraefe <hholzgra@php.net>
Tue, 23 May 2000 20:07:32 +0000 (20:07 +0000)
ext/standard/levenshtein.c

index 4227cf05f4ef768381a85f0376000d2f9a902177..6809ef575283ef943256f4a551111a61703be3e3 100644 (file)
 
 static int calc_levdist(const char *s1, const char *s2) /* faster, but obfuscated */
 {
-       register char *p1,*p2;
+       register char *p1,*p2; 
        register int i,j,n;
        int l1=0,l2=0;
        char r[512];
+       const char *tmp;
 
        /* skip equal start sequence, if any */
        while(*s1==*s2) {
@@ -54,22 +55,15 @@ static int calc_levdist(const char *s1, const char *s2) /* faster, but obfuscate
        /* reset pointers, adjust length */
        s1-=l1++;
        s2-=l2++;
+       
 
        /* possible dist to great? */
        if(abs(l1-l2)>=255) return -1;
 
        /* swap if l2 longer than l1 */
        if(l1<l2) {
-               const char *s3;
-               int l3;
-               
-               s3 = s1;
-               s1 = s2;
-               s2 = s3;
-
-               l3 = l1;
-               l1 = l2;
-               l2 = l3;
+               tmp=s1; s1=s2; s2=tmp;
+               l1 ^= l2; l2 ^= l1; l1 ^= l2;
        }