summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libnsgif.h11
-rw-r--r--src/libnsgif.c48
-rw-r--r--test/decode_gif.c3
3 files changed, 19 insertions, 43 deletions
diff --git a/include/libnsgif.h b/include/libnsgif.h
index 5bd26b4..309e2f0 100644
--- a/include/libnsgif.h
+++ b/include/libnsgif.h
@@ -23,9 +23,9 @@
typedef enum {
GIF_WORKING = 1,
GIF_OK = 0,
- GIF_INSUFFICIENT_FRAME_DATA = -1,
+ GIF_INSUFFICIENT_DATA = -1,
+ GIF_INSUFFICIENT_FRAME_DATA = GIF_INSUFFICIENT_DATA,
GIF_FRAME_DATA_ERROR = -2,
- GIF_INSUFFICIENT_DATA = -3,
GIF_DATA_ERROR = -4,
GIF_INSUFFICIENT_MEMORY = -5,
GIF_FRAME_NO_DISPLAY = -6,
@@ -166,11 +166,9 @@ void gif_create(gif_animation *gif, gif_bitmap_callback_vt *bitmap_callbacks);
*
* \return Error return value.
* - GIF_FRAME_DATA_ERROR for GIF frame data error
- * - GIF_INSUFFICIENT_FRAME_DATA for insufficient data to process
- * any more frames
+ * - GIF_INSUFFICIENT_DATA reached unexpected end of source data
* - GIF_INSUFFICIENT_MEMORY for memory error
* - GIF_DATA_ERROR for GIF error
- * - GIF_INSUFFICIENT_DATA for insufficient data to do anything
* - GIF_OK for successful decoding
* - GIF_WORKING for successful decoding if more frames are expected
*/
@@ -181,9 +179,8 @@ gif_result gif_initialise(gif_animation *gif, size_t size, const uint8_t *data);
*
* \return Error return value.
* - GIF_FRAME_DATA_ERROR for GIF frame data error
- * - GIF_INSUFFICIENT_FRAME_DATA for insufficient data to complete the frame
* - GIF_DATA_ERROR for GIF error (invalid frame header)
- * - GIF_INSUFFICIENT_DATA for insufficient data to do anything
+ * - GIF_INSUFFICIENT_DATA reached unexpected end of source data
* - GIF_INSUFFICIENT_MEMORY for insufficient memory to process
* - GIF_OK for successful decoding
*/
diff --git a/src/libnsgif.c b/src/libnsgif.c
index f0fab44..457ce00 100644
--- a/src/libnsgif.c
+++ b/src/libnsgif.c
@@ -77,7 +77,7 @@ static gif_result gif_error_from_lzw(lzw_result l_res)
[LZW_OK] = GIF_OK,
[LZW_OK_EOD] = GIF_END_OF_FRAME,
[LZW_NO_MEM] = GIF_INSUFFICIENT_MEMORY,
- [LZW_NO_DATA] = GIF_INSUFFICIENT_FRAME_DATA,
+ [LZW_NO_DATA] = GIF_INSUFFICIENT_DATA,
[LZW_EOI_CODE] = GIF_FRAME_DATA_ERROR,
[LZW_BAD_ICODE] = GIF_FRAME_DATA_ERROR,
[LZW_BAD_CODE] = GIF_FRAME_DATA_ERROR,
@@ -560,7 +560,7 @@ static gif_result gif__update_bitmap(
* \param[in] frame The gif object we're decoding.
* \param[in] data The data to decode.
* \param[in] len Byte length of data.
- * \return GIF_INSUFFICIENT_FRAME_DATA if more data is needed,
+ * \return GIF_INSUFFICIENT_DATA if more data is needed,
* GIF_OK for success.
*/
static gif_result gif__parse_extension_graphic_control(
@@ -581,7 +581,7 @@ static gif_result gif__parse_extension_graphic_control(
* +5 CHAR Transparent Color Index
*/
if (len < 6) {
- return GIF_INSUFFICIENT_FRAME_DATA;
+ return GIF_INSUFFICIENT_DATA;
}
frame->frame_delay = data[3] | (data[4] << 8);
@@ -616,7 +616,7 @@ static gif_result gif__parse_extension_graphic_control(
* \param[in] gif The gif object we're decoding.
* \param[in] data The data to decode.
* \param[in] len Byte length of data.
- * \return GIF_INSUFFICIENT_FRAME_DATA if more data is needed,
+ * \return GIF_INSUFFICIENT_DATA if more data is needed,
* GIF_OK for success.
*/
static gif_result gif__parse_extension_application(
@@ -633,7 +633,7 @@ static gif_result gif__parse_extension_application(
* +13 1-256 Application Data (Data sub-blocks)
*/
if (len < 17) {
- return GIF_INSUFFICIENT_FRAME_DATA;
+ return GIF_INSUFFICIENT_DATA;
}
if ((data[1] == 0x0b) &&
@@ -651,7 +651,7 @@ static gif_result gif__parse_extension_application(
* \param[in] gif The gif object we're decoding.
* \param[in] frame The frame to parse extensions for.
* \param[in] decode Whether to decode or skip over the extension.
- * \return GIF_INSUFFICIENT_FRAME_DATA if more data is needed,
+ * \return GIF_INSUFFICIENT_DATA if more data is needed,
* GIF_OK for success.
*/
static gif_result gif__parse_frame_extensions(
@@ -673,7 +673,7 @@ static gif_result gif__parse_frame_extensions(
gif_bytes--;
if (gif_bytes == 0) {
- return GIF_INSUFFICIENT_FRAME_DATA;
+ return GIF_INSUFFICIENT_DATA;
}
/* Switch on extension label */
@@ -715,7 +715,7 @@ static gif_result gif__parse_frame_extensions(
* the extension size itself
*/
if (gif_bytes < 2) {
- return GIF_INSUFFICIENT_FRAME_DATA;
+ return GIF_INSUFFICIENT_DATA;
}
gif_data += 2 + gif_data[1];
}
@@ -725,7 +725,7 @@ static gif_result gif__parse_frame_extensions(
while (gif_data < gif_end && gif_data[0] != GIF_BLOCK_TERMINATOR) {
gif_data += gif_data[0] + 1;
if (gif_data >= gif_end) {
- return GIF_INSUFFICIENT_FRAME_DATA;
+ return GIF_INSUFFICIENT_DATA;
}
}
gif_data++;
@@ -779,7 +779,7 @@ static gif_result gif__parse_image_descriptor(
assert(frame != NULL);
if (len < GIF_IMAGE_DESCRIPTOR_LEN) {
- return GIF_INSUFFICIENT_FRAME_DATA;
+ return GIF_INSUFFICIENT_DATA;
}
if (decode) {
@@ -830,11 +830,7 @@ static gif_result gif__colour_table_extract(
size_t len = gif->gif_data + gif->buffer_size - data;
if (len < colour_table_entries * 3) {
- if (colour_table == gif->local_colour_table) {
- return GIF_INSUFFICIENT_FRAME_DATA;
- } else {
- return GIF_INSUFFICIENT_DATA;
- }
+ return GIF_INSUFFICIENT_DATA;
}
if (decode) {
@@ -935,7 +931,7 @@ static gif_result gif__parse_image_data(
/* Fall through. */
case 1: if (data[0] == GIF_TRAILER) return GIF_OK;
/* Fall through. */
- case 0: return GIF_INSUFFICIENT_FRAME_DATA;
+ case 0: return GIF_INSUFFICIENT_DATA;
}
minimum_code_size = data[0];
@@ -953,7 +949,7 @@ static gif_result gif__parse_image_data(
len--;
while (block_size != 1) {
- if (len < 1) return GIF_INSUFFICIENT_FRAME_DATA;
+ if (len < 1) return GIF_INSUFFICIENT_DATA;
block_size = data[0] + 1;
/* Check if the frame data runs off the end of the file */
if (block_size > len) {
@@ -971,7 +967,7 @@ static gif_result gif__parse_image_data(
/* Check if we've finished */
if (len < 1) {
- return GIF_INSUFFICIENT_FRAME_DATA;
+ return GIF_INSUFFICIENT_DATA;
} else {
if (data[0] == GIF_TRAILER) {
return GIF_OK;
@@ -1026,10 +1022,9 @@ static struct gif_frame *gif__get_frame(
* \param[in] frame_idx The frame number to decode.
* \param[in] decode Whether to decode the graphical image data.
* \return error code
- * - GIF_INSUFFICIENT_DATA for insufficient data to do anything
+ * - GIF_INSUFFICIENT_DATA reached unexpected end of source data.
* - GIF_FRAME_DATA_ERROR for GIF frame data error
* - GIF_INSUFFICIENT_MEMORY for insufficient memory to process
- * - GIF_INSUFFICIENT_FRAME_DATA for insufficient data to complete the frame
* - GIF_DATA_ERROR for GIF error (invalid frame header)
* - GIF_OK for successful decoding
* - GIF_WORKING for successful decoding if more frames are expected
@@ -1326,19 +1321,6 @@ gif_result gif_initialise(gif_animation *gif, size_t size, const uint8_t *data)
/* Repeatedly try to initialise frames */
while ((ret = gif__process_frame(gif, gif->frame_count, false)) == GIF_WORKING);
- /* If there was a memory error tell the caller */
- if ((ret == GIF_INSUFFICIENT_MEMORY) ||
- (ret == GIF_DATA_ERROR)) {
- return ret;
- }
-
- /* If we didn't have some frames then a GIF_INSUFFICIENT_DATA becomes a
- * GIF_INSUFFICIENT_FRAME_DATA
- */
- if (ret == GIF_INSUFFICIENT_DATA && gif->frame_count_partial > 0) {
- return GIF_INSUFFICIENT_FRAME_DATA;
- }
-
return ret;
}
diff --git a/test/decode_gif.c b/test/decode_gif.c
index 64387ef..52d73b6 100644
--- a/test/decode_gif.c
+++ b/test/decode_gif.c
@@ -113,9 +113,6 @@ static void warning(const char *context, gif_result code)
fprintf(stderr, "%s failed: ", context);
switch (code)
{
- case GIF_INSUFFICIENT_FRAME_DATA:
- fprintf(stderr, "GIF_INSUFFICIENT_FRAME_DATA");
- break;
case GIF_FRAME_DATA_ERROR:
fprintf(stderr, "GIF_FRAME_DATA_ERROR");
break;