Commit c7bc0b98 authored by Tim Peters's avatar Tim Peters

SF patch 730594: assert from longobject.c, line 1215.

Some version of gcc in the "RTEMS port running on the Coldfire (m5200)
processor" generates bad code for a loop in long_from_binary_base(),
comparing the wrong half of an int to a short.  The patch changes the
decl of the short temp to be an int temp instead.  This "simplifies"
the code enough that gcc no longer blows it.
parent ce6829ad
......@@ -1201,8 +1201,8 @@ long_from_binary_base(char **str, int base)
bits_in_accum = 0;
pdigit = z->ob_digit;
while (--p >= start) {
unsigned char ch = (unsigned char)*p;
digit k;
int k;
char ch = *p;
if (ch <= '9')
k = ch - '0';
......@@ -1212,8 +1212,8 @@ long_from_binary_base(char **str, int base)
assert(ch >= 'A');
k = ch - 'A' + 10;
}
assert(k < base);
accum |= k << bits_in_accum;
assert(k >= 0 && k < base);
accum |= (twodigits)(k << bits_in_accum);
bits_in_accum += bits_per_char;
if (bits_in_accum >= SHIFT) {
*pdigit++ = (digit)(accum & MASK);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment