1
0
mirror of https://github.com/prirun/p50em.git synced 2026-01-29 04:41:05 +00:00

Fix link fail on x64-64

Weird gcc behavior.  Code snippet:

   uint16_t data;
   char ch;
   ...
   i = (data >> 8) & 0xff;
   ch = data & 0xff;
   ...
   fprintf(smlclog, "%s OTA '01%02o line '%02o set special character %d <%02x>\n", smlctimestamp, device, dc[dx].lineno, i, ch);

Output on x86-64 before this change:

    17:13:51 OTA '0150 line '02 set special character 3 <ffffffff>

Output on armhf or on x86-64 after this change:

    19:05:00.130466808 OTA '0150 line '02 set special character 3 <ff>

WTH?  Masking an unsigned with an appropriately sized mask produces a
sign extension?
This commit is contained in:
Dennis Boone
2020-06-22 23:54:22 -04:00
parent 43d2d863d7
commit 543aa3f963

View File

@@ -250,7 +250,7 @@ int devsmlc (int class, int func, int device) {
char *bp;
char buf[SMLC_BUFSIZE];
int bufidx;
char ch;
unsigned char ch;
time_t currenttime;
uint16_t data;
ea_t dmcbufbegea;