Mercurial > hg > forks > geeqie
changeset 1907:b3238ae21c7a
fixed jpeg_segment_find to support more app2 segments with different signatures
author | Vladimir Nadvornik <nadvornik@suse.cz> |
---|---|
date | Sun, 27 Mar 2011 13:53:23 +0200 |
parents | dc0a62722612 |
children | b5b95dd93eea |
files | src/jpeg_parser.c |
diffstat | 1 files changed, 11 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/jpeg_parser.c Sun Mar 27 12:52:09 2011 +0200 +++ b/src/jpeg_parser.c Sun Mar 27 13:53:23 2011 +0200 @@ -10,8 +10,7 @@ guint offset = 0; guint length = 0; - while (marker != app_marker && - marker != JPEG_MARKER_EOI) + while (marker != JPEG_MARKER_EOI) { offset += length; length = 2; @@ -25,19 +24,18 @@ { if (offset + 4 >= size) return FALSE; length += ((guint)data[offset + 2] << 8) + data[offset + 3]; + + if (marker == app_marker && + offset + length < size && + length >= 4 + magic_len && + memcmp(data + offset + 4, magic, magic_len) == 0) + { + *seg_offset = offset + 4; + *seg_length = length - 4; + return TRUE; + } } } - - if (marker == app_marker && - offset + length < size && - length >= 4 + magic_len && - memcmp(data + offset + 4, magic, magic_len) == 0) - { - *seg_offset = offset + 4; - *seg_length = length - 4; - return TRUE; - } - return FALSE; }