summaryrefslogtreecommitdiff
path: root/ext/standard/levenshtein.c
diff options
context:
space:
mode:
authorHartmut Holzgraefe <hholzgra@php.net>2000-05-23 20:07:32 +0000
committerHartmut Holzgraefe <hholzgra@php.net>2000-05-23 20:07:32 +0000
commit251cda4941f17a36dc18b7a65be76726bacd4f23 (patch)
tree75e33f8b7b43a1fc7b5a905f58b4065335ed6312 /ext/standard/levenshtein.c
parent5d10b23a788c703e21f3506bac3182b86066096c (diff)
downloadphp-git-251cda4941f17a36dc18b7a65be76726bacd4f23.tar.gz
a little less optimized, but no dirty tricks anymore
Diffstat (limited to 'ext/standard/levenshtein.c')
-rw-r--r--ext/standard/levenshtein.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/ext/standard/levenshtein.c b/ext/standard/levenshtein.c
index 4227cf05f4..6809ef5752 100644
--- a/ext/standard/levenshtein.c
+++ b/ext/standard/levenshtein.c
@@ -25,10 +25,11 @@
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;
}