Skip to content

Commit d5fa710

Browse files
committed
string: use long instead of int. Rename min() to min_three() to prevent compiler collision
1 parent 36c55d7 commit d5fa710

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

ext/algorithms/string/string.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
#include "ruby.h"
22

3-
int min(int a, int b, int c) {
4-
int min = a;
3+
long min_three(long a, long b, long c) {
4+
long min = a;
55
if (b < min)
66
min = b;
77
if( c < min)
88
min = c;
99
return min;
1010
}
1111

12-
int levenshtein_distance(VALUE str1, VALUE str2) {
13-
int i, j, s1_len, s2_len, *d;
12+
long levenshtein_distance(VALUE str1, VALUE str2) {
13+
long i, j, s1_len, s2_len, *d;
1414
char * s = RSTRING_PTR(str1);
1515
char * t = RSTRING_PTR(str2);
16-
s1_len = RSTRING_LEN(str1);
16+
s1_len = RSTRING_LEN(str1);
1717
s2_len = RSTRING_LEN(str2);
1818

1919
if (s1_len == 0) {
@@ -26,7 +26,7 @@ int levenshtein_distance(VALUE str1, VALUE str2) {
2626
s1_len++;
2727
s2_len++;
2828

29-
d = malloc(sizeof(int) * (s1_len) * (s2_len));
29+
d = malloc(sizeof(typeof(d)) * (s1_len) * (s2_len));
3030

3131
for (i = 0; i < s1_len; i++) {
3232
d[i] = i; // d[i, 0] = i
@@ -40,11 +40,11 @@ int levenshtein_distance(VALUE str1, VALUE str2) {
4040
if (s[i-1] == t[j-1]) {
4141
d[j * s1_len + i] = d[(j-1) * s1_len + (i-1)];
4242
} else {
43-
d[j * s1_len + i] = min(
43+
d[j * s1_len + i] = 1 + min_three(
4444
d[j * s1_len + (i-1)],
4545
d[(j-1) * s1_len + i],
4646
d[(j-1) * s1_len + (i-1)]
47-
) + 1;
47+
);
4848
}
4949
}
5050
}
@@ -54,7 +54,7 @@ int levenshtein_distance(VALUE str1, VALUE str2) {
5454
}
5555

5656
static VALUE lev_dist(VALUE self, VALUE str1, VALUE str2) {
57-
return INT2FIX(levenshtein_distance( str1, str2 ));
57+
return LONG2FIX(levenshtein_distance( str1, str2 ));
5858
}
5959

6060
static VALUE mAlgorithms;

0 commit comments

Comments
 (0)