summaryrefslogtreecommitdiff
path: root/src/cairo-lzw.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cairo-lzw.c')
-rw-r--r--src/cairo-lzw.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/cairo-lzw.c b/src/cairo-lzw.c
index f27b3c338..e17cdfc1c 100644
--- a/src/cairo-lzw.c
+++ b/src/cairo-lzw.c
@@ -369,10 +369,10 @@ _cairo_lzw_compress (unsigned char *data, unsigned long *size_in_out)
* lookup. */
_lzw_buf_store_bits (&buf, prev, code_bits);
- if (bytes_remaining == 0)
- break;
+ if (likely (slot != NULL))
+ LZW_SYMBOL_SET_CODE (*slot, code_next, prev, next);
- LZW_SYMBOL_SET_CODE (*slot, code_next++, prev, next);
+ code_next++;
if (code_next > LZW_BITS_BOUNDARY(code_bits))
{
@@ -384,6 +384,9 @@ _cairo_lzw_compress (unsigned char *data, unsigned long *size_in_out)
code_next = LZW_CODE_FIRST;
}
}
+
+ if (bytes_remaining == 0)
+ break;
}
/* The LZW footer is an end-of-data code. */