diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/common/disk.c | 2 | ||||
-rw-r--r-- | firmware/drivers/fat.c | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/firmware/common/disk.c b/firmware/common/disk.c index fd6de55ddb..f4d153c1c2 100644 --- a/firmware/common/disk.c +++ b/firmware/common/disk.c | |||
@@ -42,7 +42,7 @@ | |||
42 | */ | 42 | */ |
43 | 43 | ||
44 | #define BYTES2INT32(array,pos) \ | 44 | #define BYTES2INT32(array,pos) \ |
45 | ((long)array[pos] | (long)(array[pos+1] << 8 ) | \ | 45 | ((long)array[pos] | ((long)array[pos+1] << 8 ) | \ |
46 | ((long)array[pos+2] << 16 ) | ((long)array[pos+3] << 24 )) | 46 | ((long)array[pos+2] << 16 ) | ((long)array[pos+3] << 24 )) |
47 | 47 | ||
48 | static struct partinfo part[8]; /* space for 4 partitions on 2 drives */ | 48 | static struct partinfo part[8]; /* space for 4 partitions on 2 drives */ |
diff --git a/firmware/drivers/fat.c b/firmware/drivers/fat.c index 465adec479..cf2665494f 100644 --- a/firmware/drivers/fat.c +++ b/firmware/drivers/fat.c | |||
@@ -1588,8 +1588,10 @@ static int parse_direntry(struct fat_direntry *de, const unsigned char *buf) | |||
1588 | de->wrtdate = BYTES2INT16(buf,FATDIR_WRTDATE); | 1588 | de->wrtdate = BYTES2INT16(buf,FATDIR_WRTDATE); |
1589 | de->wrttime = BYTES2INT16(buf,FATDIR_WRTTIME); | 1589 | de->wrttime = BYTES2INT16(buf,FATDIR_WRTTIME); |
1590 | de->filesize = BYTES2INT32(buf,FATDIR_FILESIZE); | 1590 | de->filesize = BYTES2INT32(buf,FATDIR_FILESIZE); |
1591 | de->firstcluster = ((long)BYTES2INT16(buf,FATDIR_FSTCLUSLO)) | | 1591 | de->firstcluster = ((long)(unsigned)BYTES2INT16(buf,FATDIR_FSTCLUSLO)) | |
1592 | ((long)BYTES2INT16(buf,FATDIR_FSTCLUSHI) << 16); | 1592 | ((long)(unsigned)BYTES2INT16(buf,FATDIR_FSTCLUSHI) << 16); |
1593 | /* The double cast is to prevent a sign-extension to be done on CalmRISC16. | ||
1594 | (the result of the shift is always considered signed) */ | ||
1593 | 1595 | ||
1594 | /* fix the name */ | 1596 | /* fix the name */ |
1595 | for (i=0; (i<8) && (buf[FATDIR_NAME+i] != ' '); i++) | 1597 | for (i=0; (i<8) && (buf[FATDIR_NAME+i] != ' '); i++) |