8bit strings Fixup
Samuel Thibault
samuel.thibault at ens-lyon.org
Mon Oct 30 15:40:51 PST 2006
Hi,
Here is a fixup for 8bit strings cleanness: casting into _unsigned_ char
is needed for values greater than 127, because else the cast into long
expands the sign bit, resulting to strange output.
Samuel
-------------- next part --------------
Index: libyasm/intnum.c
===================================================================
--- libyasm/intnum.c (r?vision 1645)
+++ libyasm/intnum.c (copie de travail)
@@ -196,19 +196,19 @@
switch (len) {
case 4:
- intn->val.ul |= (unsigned long)str[3];
+ intn->val.ul |= (unsigned long)(unsigned char)str[3];
intn->val.ul <<= 8;
/*@fallthrough@*/
case 3:
- intn->val.ul |= (unsigned long)str[2];
+ intn->val.ul |= (unsigned long)(unsigned char)str[2];
intn->val.ul <<= 8;
/*@fallthrough@*/
case 2:
- intn->val.ul |= (unsigned long)str[1];
+ intn->val.ul |= (unsigned long)(unsigned char)str[1];
intn->val.ul <<= 8;
/*@fallthrough@*/
case 1:
- intn->val.ul |= (unsigned long)str[0];
+ intn->val.ul |= (unsigned long)(unsigned char)str[0];
case 0:
break;
default:
@@ -216,7 +216,7 @@
while (len) {
BitVector_Move_Left(conv_bv, 8);
BitVector_Chunk_Store(conv_bv, 8, 0,
- (unsigned long)str[--len]);
+ (unsigned long)(unsigned char)str[--len]);
}
intn->val.bv = BitVector_Clone(conv_bv);
}
More information about the yasm-devel
mailing list