* optimization: the compiler no longer refuses to coerce large fixnums to
single floats inline, except on x86 where this limitation is still
necessary.
- * optimization: truncation operations with constant divisor arguments
- 1 and -1 are optimized away.
+ * optimization: truncation operations on integers with constant divisor
+ arguments 1 and -1 are optimized away.
* bug fix: deadlock detection could report the same deadlock twice, for
two different threads. Now a single deadlock is reported exactly once.
* bug fix: interval-arithmetic division during type derivation did not
forms of MAKE-ARRAY with dynamic-extent. (lp#902351)
* bug fix: some of the compile-time side-effects of DEFCLASS were not caught
by package locks.
+ * bug fix: Proper handling of --dynamic-space-size option on 32 bit platforms.
changes in sbcl-1.0.54 relative to sbcl-1.0.53:
* minor incompatible changes:
}
#endif /* LISP_FEATURE_WIN32 */
-long parse_size_arg(char *arg, char *arg_name)
+unsigned long parse_size_arg(char *arg, char *arg_name)
{
char *tail, *power_name;
- long power, res;
- res = strtol(arg, &tail, 0);
+ unsigned long power, res;
+
+ res = strtoul(arg, &tail, 0);
+
if (arg == tail) {
lose("%s argument is not a number: %s", arg_name, arg);
} else if (tail[0]) {
free(power_name);
}
if ((res <= 0) ||
- (res >= (LONG_MAX >> power))) {
+ (res > (ULONG_MAX >> power))) {
lose("%s argument is out of range: %s", arg_name, arg);
}
res <<= power;
DYNAMIC_SPACE_START+dynamic_space_size) &&
(DYNAMIC_SPACE_START+dynamic_space_size <=
MAX_DYNAMIC_SPACE_END)))
- lose("--dynamic-space-size argument %s is too large, max %ldMiB",
+ lose("--dynamic-space-size argument %s is too large, max %lu",
argv[argi-1], MAX_DYNAMIC_SPACE_END-DYNAMIC_SPACE_START);
# endif
} else if (0 == strcmp(arg, "--control-stack-size")) {