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.
This commit is contained in:
Tim Peters 2003-05-05 20:39:43 +00:00
parent ce6829ade0
commit c7bc0b98e7
1 changed files with 4 additions and 4 deletions

View File

@ -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);