range_array should be int, not long

svn: r2255
This commit is contained in:
Matthew Flatt 2006-02-16 13:00:33 +00:00
parent dc45ce794e
commit 1c21a8bd2b

View File

@ -1930,9 +1930,9 @@ END_XFORM_SKIP;
static int compare_ranges(const void *a, const void *b)
{
unsigned long av, bv;
av = *(unsigned long *)a;
bv = *(unsigned long *)b;
unsigned int av, bv;
av = *(unsigned int *)a;
bv = *(unsigned int *)b;
if (av == bv)
return 0;
else if (av < bv)
@ -2217,8 +2217,7 @@ static int translate(unsigned char *s, int len, char **result)
/* Need to translate. */
char *simple_on;
Scheme_Object *ranges;
unsigned int *us;
unsigned long *range_array;
unsigned int *us, *range_array;
int ulen, on_count, range_len, rp, p;
ulen = scheme_utf8_decode(s, rs.i + 1, k, NULL, 0, -1, NULL, 0, 0);
@ -2284,17 +2283,17 @@ static int translate(unsigned char *s, int len, char **result)
/* Turn the ranges list into an array */
range_len = scheme_list_length(ranges);
range_array = (unsigned long *)scheme_malloc_atomic(2 * range_len * sizeof(unsigned long));
range_array = (unsigned int *)scheme_malloc_atomic(2 * range_len * sizeof(unsigned int));
for (rp = 0; SCHEME_PAIRP(ranges); ranges = SCHEME_CDR(ranges), rp += 2) {
unsigned long hi, lo;
scheme_get_unsigned_int_val(SCHEME_CAAR(ranges), &lo);
scheme_get_unsigned_int_val(SCHEME_CDR(SCHEME_CAR(ranges)), &hi);
range_array[rp] = lo;
range_array[rp+1] = hi;
range_array[rp] = (unsigned int)lo;
range_array[rp+1] = (unsigned int)hi;
}
range_len *= 2;
/* Sort the ranges by the starting index. */
my_qsort(range_array, range_len >> 1, 2 * sizeof(unsigned long), compare_ranges);
my_qsort(range_array, range_len >> 1, 2 * sizeof(unsigned int), compare_ranges);
/* If a range starts below 128, fill in the simple array */
for (rp = 0; rp < range_len; rp += 2) {