- Fixed: strbin ate the character following a \x sequence and placed one-digit sequences into the high nibble of the output character.

SVN r3625 (trunk)
This commit is contained in:
Randy Heit 2012-05-06 03:16:11 +00:00
parent 432aa7e6bb
commit 88fcd743b4
1 changed files with 26 additions and 22 deletions

View File

@ -600,18 +600,20 @@ int strbin (char *str)
case 'x': case 'x':
case 'X': case 'X':
c = 0; c = 0;
p++; for (i = 0; i < 2; i++)
for (i = 0; i < 2; i++) { {
c <<= 4;
if (*p >= '0' && *p <= '9')
c += *p-'0';
else if (*p >= 'a' && *p <= 'f')
c += 10 + *p-'a';
else if (*p >= 'A' && *p <= 'F')
c += 10 + *p-'A';
else
break;
p++; p++;
if (*p >= '0' && *p <= '9')
c = (c << 4) + *p-'0';
else if (*p >= 'a' && *p <= 'f')
c = (c << 4) + 10 + *p-'a';
else if (*p >= 'A' && *p <= 'F')
c = (c << 4) + 10 + *p-'A';
else
{
p--;
break;
}
} }
*str++ = c; *str++ = c;
break; break;
@ -698,18 +700,20 @@ FString strbin1 (const char *start)
case 'x': case 'x':
case 'X': case 'X':
c = 0; c = 0;
p++; for (i = 0; i < 2; i++)
for (i = 0; i < 2; i++) { {
c <<= 4;
if (*p >= '0' && *p <= '9')
c += *p-'0';
else if (*p >= 'a' && *p <= 'f')
c += 10 + *p-'a';
else if (*p >= 'A' && *p <= 'F')
c += 10 + *p-'A';
else
break;
p++; p++;
if (*p >= '0' && *p <= '9')
c = (c << 4) + *p-'0';
else if (*p >= 'a' && *p <= 'f')
c = (c << 4) + 10 + *p-'a';
else if (*p >= 'A' && *p <= 'F')
c = (c << 4) + 10 + *p-'A';
else
{
p--;
break;
}
} }
result << c; result << c;
break; break;