static const unsigned char * gif_read_subblocks(fz_context *ctx, struct info *info, const unsigned char *p, const unsigned char *end, fz_buffer *buf) { int len; do { if (end - p < 1) fz_throw(ctx, FZ_ERROR_GENERIC, "premature end in data subblocks in gif image"); len = *p; p += 1; if (len > 0) { if (end - p < len) fz_throw(ctx, FZ_ERROR_GENERIC, "premature end in data subblock in gif image"); if (buf) fz_append_data(ctx, buf, p, len); p += len; } } while (len > 0); return p; }
static void buffer_write(fz_context *ctx, void *opaque, const void *data, size_t len) { fz_buffer *buffer = opaque; fz_append_data(ctx, buffer, data, len); }