|
|
@ -67,6 +67,17 @@ static int gif_find_frame_end(GIFParseContext *g, const uint8_t *buf, |
|
|
|
g->state = GIF_EXTENSION; |
|
|
|
g->state = GIF_EXTENSION; |
|
|
|
g->found_start = pc->frame_start_found = 1; |
|
|
|
g->found_start = pc->frame_start_found = 1; |
|
|
|
} else if (buf[index] == GIF_IMAGE_SEPARATOR) { |
|
|
|
} else if (buf[index] == GIF_IMAGE_SEPARATOR) { |
|
|
|
|
|
|
|
if (g->state != GIF_EXTENSION_BLOCK && g->found_start && |
|
|
|
|
|
|
|
g->found_end && g->found_sig) { |
|
|
|
|
|
|
|
next = index; |
|
|
|
|
|
|
|
g->found_start = pc->frame_start_found = 1; |
|
|
|
|
|
|
|
g->found_end = 0; |
|
|
|
|
|
|
|
g->index = 0; |
|
|
|
|
|
|
|
g->gct_flag = 0; |
|
|
|
|
|
|
|
g->gct_size = 0; |
|
|
|
|
|
|
|
g->state = GIF_IMAGE; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
g->state = GIF_IMAGE; |
|
|
|
g->state = GIF_IMAGE; |
|
|
|
} else if (buf[index] == GIF_TRAILER) { |
|
|
|
} else if (buf[index] == GIF_TRAILER) { |
|
|
|
g->state = 0; |
|
|
|
g->state = 0; |
|
|
|