diff options
author | Marcus Meissner <marcus@jet.franken.de> | 2021-07-09 11:47:07 +0200 |
---|---|---|
committer | Marcus Meissner <marcus@jet.franken.de> | 2021-07-09 11:47:07 +0200 |
commit | 344b2f9ee96820c02d1708c502dccf3da960f8db (patch) | |
tree | c8e105f3c284dabc40c1ca7c507464540e5f4fb4 /camlibs | |
parent | 5efb4574c0e328e710bc2d612307e80a6c65809c (diff) | |
download | libgphoto2-344b2f9ee96820c02d1708c502dccf3da960f8db.tar.gz |
harmoize the jpeg extractors pointer arithmetic for memchr to be valid C
Diffstat (limited to 'camlibs')
-rw-r--r-- | camlibs/ptp2/library.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/camlibs/ptp2/library.c b/camlibs/ptp2/library.c index d6f668525..4c1e6a422 100644 --- a/camlibs/ptp2/library.c +++ b/camlibs/ptp2/library.c @@ -3240,7 +3240,7 @@ camera_capture_stream_preview (Camera *camera, CameraFile *file, GPContext *cont break; } else { /* go on looking (starting at next byte) */ jpgStartPtr++; - jpgStartPtr = (unsigned char*)memchr(jpgStartPtr, 0xff, data + size - jpgStartPtr); + jpgStartPtr = (unsigned char*)memchr(jpgStartPtr, 0xff, size - (jpgStartPtr - data)); } } if(!jpgStartPtr) { /* no SOI -> no JPEG */ @@ -3537,7 +3537,7 @@ enable_liveview: break; } else { /* go on looking (starting at next byte) */ jpgStartPtr++; - jpgStartPtr = (unsigned char*)memchr(jpgStartPtr, 0xff, data + size - jpgStartPtr); + jpgStartPtr = (unsigned char*)memchr(jpgStartPtr, 0xff, size - (jpgStartPtr - data)); } } if(!jpgStartPtr) { /* no SOI -> no JPEG */ @@ -3546,14 +3546,14 @@ enable_liveview: } /* if SOI found, start looking for EOI marker (0xFFD9) one byte after SOI (just to be sure we will not go beyond the end of the data array) */ - jpgEndPtr = (unsigned char*)memchr(jpgStartPtr+1, 0xff, data+size-jpgStartPtr-1); + jpgEndPtr = (unsigned char*)memchr(jpgStartPtr+1, 0xff, size-(jpgStartPtr-data)-1); while(jpgEndPtr && ((jpgEndPtr+1) < (data + size))) { if(*(jpgEndPtr + 1) == 0xd9) { /* EOI found */ jpgEndPtr += 2; break; } else { /* go on looking (starting at next byte) */ jpgEndPtr++; - jpgEndPtr = (unsigned char*)memchr(jpgEndPtr, 0xff, data + size - jpgEndPtr); + jpgEndPtr = (unsigned char*)memchr(jpgEndPtr, 0xff, size - (jpgEndPtr-data)); } } if(!jpgEndPtr) { /* no EOI -> no JPEG */ @@ -3629,7 +3629,7 @@ enable_liveview: break; } else { /* go on looking (starting at next byte) */ jpgStartPtr++; - jpgStartPtr = (unsigned char*)memchr(jpgStartPtr, 0xff, ximage + size - jpgStartPtr); + jpgStartPtr = (unsigned char*)memchr(jpgStartPtr, 0xff, size - (jpgStartPtr - ximage)); } } if(!jpgStartPtr) { /* no SOI -> no JPEG */ @@ -3645,7 +3645,7 @@ enable_liveview: break; } else { /* go on looking (starting at next byte) */ jpgEndPtr++; - jpgEndPtr = (unsigned char*)memchr(jpgEndPtr, 0xff, ximage + size - jpgEndPtr); + jpgEndPtr = (unsigned char*)memchr(jpgEndPtr, 0xff, size - (jpgEndPtr - ximage)); } } if(!jpgEndPtr) { /* no EOI -> no JPEG */ @@ -3767,7 +3767,7 @@ enable_liveview: break; } else { /* go on looking (starting at next byte) */ jpgStartPtr++; - jpgStartPtr = (unsigned char*)memchr(jpgStartPtr, 0xff, ximage + size - jpgStartPtr); + jpgStartPtr = (unsigned char*)memchr(jpgStartPtr, 0xff, size - (jpgStartPtr - ximage)); } } if(!jpgStartPtr) { /* no SOI -> no JPEG */ @@ -3783,7 +3783,7 @@ enable_liveview: break; } else { /* go on looking (starting at next byte) */ jpgEndPtr++; - jpgEndPtr = (unsigned char*)memchr(jpgEndPtr, 0xff, ximage + size - jpgEndPtr); + jpgEndPtr = (unsigned char*)memchr(jpgEndPtr, 0xff, size - (jpgEndPtr - ximage)); } } if(!jpgEndPtr) { /* no EOI -> no JPEG */ @@ -3856,7 +3856,7 @@ enable_liveview: break; } else { /* go on looking (starting at next byte) */ jpgStartPtr++; - jpgStartPtr = (unsigned char*)memchr(jpgStartPtr, 0xff, ximage + size - jpgStartPtr); + jpgStartPtr = (unsigned char*)memchr(jpgStartPtr, 0xff, size - (jpgStartPtr-ximage)); } } if(!jpgStartPtr) { /* no SOI -> no JPEG */ |