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;
 }