X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flibpspp%2Fsparse-array.c;h=5babbc125fafb9cf4e3f3c737d74a36cd337501c;hb=6eeee3ec27d9e75cba2f390fc7dceef7ff38c2f3;hp=28398d5cc86321e9e648a9c0ac30c052c1d26641;hpb=b5c82cc9aabe7e641011130240ae1b2e84348e23;p=pspp diff --git a/src/libpspp/sparse-array.c b/src/libpspp/sparse-array.c index 28398d5cc8..5babbc125f 100644 --- a/src/libpspp/sparse-array.c +++ b/src/libpspp/sparse-array.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -533,7 +534,9 @@ scan_in_use_reverse (struct leaf_node *leaf, unsigned int idx) for (;;) { int ofs = idx % LONG_BITS; - unsigned long int in_use = leaf->in_use[idx / LONG_BITS] << (31 - ofs); + unsigned long int in_use; + + in_use = leaf->in_use[idx / LONG_BITS] << (LONG_BITS - 1 - ofs); if (in_use) return idx - count_leading_zeros (in_use); if (idx < LONG_BITS) @@ -577,7 +580,7 @@ leaf_size (const struct sparse_array *spar) static struct leaf_node * find_leaf_node (const struct sparse_array *spar_, unsigned long int key) { - struct sparse_array *spar = (struct sparse_array *) spar_; + struct sparse_array *spar = CONST_CAST (struct sparse_array *, spar_); const union pointer *p; int level; @@ -679,7 +682,7 @@ static void * scan_forward (const struct sparse_array *spar_, unsigned long int start, unsigned long int *found) { - struct sparse_array *spar = (struct sparse_array *) spar_; + struct sparse_array *spar = CONST_CAST (struct sparse_array *, spar_); /* Check the cache. */ if (start >> BITS_PER_LEVEL == spar->cache_ofs) @@ -761,7 +764,7 @@ static void * scan_reverse (const struct sparse_array *spar_, unsigned long int start, unsigned long int *found) { - struct sparse_array *spar = (struct sparse_array *) spar_; + struct sparse_array *spar = CONST_CAST (struct sparse_array *, spar_); /* Check the cache. */ if (start >> BITS_PER_LEVEL == spar->cache_ofs)