diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2017-01-16 00:10:38 +0100 |
---|---|---|
committer | Gerrit Rockbox <gerrit@rockbox.org> | 2017-02-04 17:24:47 +0100 |
commit | d7871914acd2ed77f43344e36e08944524a67d9e (patch) | |
tree | 7bcef243d9b53c3703c305b8a5f9f8a8488eabfb /lib/rbcodec | |
parent | 1245c5fe61f6ca8e1980a33a8b8f7ea4322829fd (diff) | |
download | rockbox-d7871914acd2ed77f43344e36e08944524a67d9e.tar.gz rockbox-d7871914acd2ed77f43344e36e08944524a67d9e.zip |
Fix dangerous casts
On Windows 64-bit, the size of long is 32-bit, thus any pointer to long cast is
not valid. In any case, one should use intptr_t and ptrdiff_t when casting
to integers. This commit attempts to fix all instances reported by GCC.
When relevant, I replaced code by the macros PTR_ADD, ALIGN_UP from system.h
Change-Id: I2273b0e8465d3c4689824717ed5afa5ed238a2dc
Diffstat (limited to 'lib/rbcodec')
-rw-r--r-- | lib/rbcodec/codecs/liba52/bitstream.c | 2 | ||||
-rw-r--r-- | lib/rbcodec/codecs/libtremor/codebook.c | 6 | ||||
-rw-r--r-- | lib/rbcodec/metadata/id3tags.c | 6 |
3 files changed, 7 insertions, 7 deletions
diff --git a/lib/rbcodec/codecs/liba52/bitstream.c b/lib/rbcodec/codecs/liba52/bitstream.c index 155368f1ed..69dd1dc5b7 100644 --- a/lib/rbcodec/codecs/liba52/bitstream.c +++ b/lib/rbcodec/codecs/liba52/bitstream.c | |||
@@ -35,7 +35,7 @@ void a52_bitstream_set_ptr (a52_state_t * state, uint8_t * buf) | |||
35 | { | 35 | { |
36 | int align; | 36 | int align; |
37 | 37 | ||
38 | align = (long)buf & 3; | 38 | align = (intptr_t)buf & 3; |
39 | state->buffer_start = (uint32_t *) (buf - align); | 39 | state->buffer_start = (uint32_t *) (buf - align); |
40 | state->bits_left = 0; | 40 | state->bits_left = 0; |
41 | state->current_word = 0; | 41 | state->current_word = 0; |
diff --git a/lib/rbcodec/codecs/libtremor/codebook.c b/lib/rbcodec/codecs/libtremor/codebook.c index 7087f0a323..f3ac5a2b7e 100644 --- a/lib/rbcodec/codecs/libtremor/codebook.c +++ b/lib/rbcodec/codecs/libtremor/codebook.c | |||
@@ -293,7 +293,7 @@ static long decode_packed_block(codebook *book, oggpack_buffer *b, | |||
293 | if(b->endbyte < b->storage - 8) { | 293 | if(b->endbyte < b->storage - 8) { |
294 | ogg_uint32_t *ptr; | 294 | ogg_uint32_t *ptr; |
295 | unsigned long bit, bitend; | 295 | unsigned long bit, bitend; |
296 | unsigned long adr; | 296 | intptr_t adr; |
297 | ogg_uint32_t cache = 0; | 297 | ogg_uint32_t cache = 0; |
298 | int cachesize = 0; | 298 | int cachesize = 0; |
299 | const unsigned int cachemask = (1<<book->dec_firsttablen)-1; | 299 | const unsigned int cachemask = (1<<book->dec_firsttablen)-1; |
@@ -303,7 +303,7 @@ static long decode_packed_block(codebook *book, oggpack_buffer *b, | |||
303 | const ogg_uint32_t *book_codelist = book->codelist; | 303 | const ogg_uint32_t *book_codelist = book->codelist; |
304 | const char *book_dec_codelengths = book->dec_codelengths; | 304 | const char *book_dec_codelengths = book->dec_codelengths; |
305 | 305 | ||
306 | adr = (unsigned long)b->ptr; | 306 | adr = (intptr_t)b->ptr; |
307 | bit = (adr&3)*8+b->endbit; | 307 | bit = (adr&3)*8+b->endbit; |
308 | ptr = (ogg_uint32_t*)(adr&~3); | 308 | ptr = (ogg_uint32_t*)(adr&~3); |
309 | bitend = ((adr&3)+(b->storage-b->endbyte))*8; | 309 | bitend = ((adr&3)+(b->storage-b->endbyte))*8; |
@@ -334,7 +334,7 @@ static long decode_packed_block(codebook *book, oggpack_buffer *b, | |||
334 | cache >>= l; | 334 | cache >>= l; |
335 | } | 335 | } |
336 | 336 | ||
337 | adr=(unsigned long)b->ptr; | 337 | adr=(intptr_t)b->ptr; |
338 | bit-=(adr&3)*8+cachesize; | 338 | bit-=(adr&3)*8+cachesize; |
339 | b->endbyte+=bit/8; | 339 | b->endbyte+=bit/8; |
340 | b->ptr+=bit/8; | 340 | b->ptr+=bit/8; |
diff --git a/lib/rbcodec/metadata/id3tags.c b/lib/rbcodec/metadata/id3tags.c index 3492197c40..cda8ce3b7a 100644 --- a/lib/rbcodec/metadata/id3tags.c +++ b/lib/rbcodec/metadata/id3tags.c | |||
@@ -191,7 +191,7 @@ static int unsynchronize(char* tag, int len, bool *ff_found) | |||
191 | wp++; | 191 | wp++; |
192 | } | 192 | } |
193 | } | 193 | } |
194 | return (long)wp - (long)tag; | 194 | return (intptr_t)wp - (intptr_t)tag; |
195 | } | 195 | } |
196 | 196 | ||
197 | static int unsynchronize_frame(char* tag, int len) | 197 | static int unsynchronize_frame(char* tag, int len) |
@@ -562,7 +562,7 @@ static int unicode_munge(char* string, char* utf8buf, int *len) { | |||
562 | (*len)--; | 562 | (*len)--; |
563 | utf8 = iso_decode(str, utf8, -1, *len); | 563 | utf8 = iso_decode(str, utf8, -1, *len); |
564 | *utf8 = 0; | 564 | *utf8 = 0; |
565 | *len = (unsigned long)utf8 - (unsigned long)utf8buf; | 565 | *len = (intptr_t)utf8 - (intptr_t)utf8buf; |
566 | break; | 566 | break; |
567 | 567 | ||
568 | case 0x01: /* Unicode with or without BOM */ | 568 | case 0x01: /* Unicode with or without BOM */ |
@@ -619,7 +619,7 @@ static int unicode_munge(char* string, char* utf8buf, int *len) { | |||
619 | default: /* Plain old string */ | 619 | default: /* Plain old string */ |
620 | utf8 = iso_decode(str, utf8, -1, *len); | 620 | utf8 = iso_decode(str, utf8, -1, *len); |
621 | *utf8 = 0; | 621 | *utf8 = 0; |
622 | *len = (unsigned long)utf8 - (unsigned long)utf8buf; | 622 | *len = (intptr_t)utf8 - (intptr_t)utf8buf; |
623 | break; | 623 | break; |
624 | } | 624 | } |
625 | return 0; | 625 | return 0; |