; // OK
} else if (memcmp(swf->header.magic, "CWS", SWF_MAGIC_SIZE) == 0) {
int result;
- unsigned long compsize;
+ unsigned long compsize, old_size;
unsigned char *new_buff, *old_buff_ref;
bitstream_setpos(bs, SWF_HEADER_SIZE, 0);
old_buff_ref = bitstream_buffer(bs, SWF_HEADER_SIZE);
- new_buff = malloc(swf->header.file_length - SWF_HEADER_SIZE);
- result = compress(new_buff, &compsize, old_buff_ref,
- bs->data_len - SWF_HEADER_SIZE);
+ old_size = bs->data_len - SWF_HEADER_SIZE;
+ compsize = old_size;
+ new_buff = malloc(compsize);
+ result = compress(new_buff, &compsize, old_buff_ref, old_size);
if (result != Z_OK) {
if (result == Z_MEM_ERROR) {
fprintf(stderr, "swf_object_output: compress Z_MEM_ERROR: can't malloc\n");
bitstream_t *bs;
unsigned char *data, *new_buff;
unsigned long offset_to_alpha;
- unsigned long compsize;
+ unsigned long compsize, old_size;
(void) swf;
*length = 0;
bs = bitstream_open();
bitstream_putbytesLE(bs, swf_tag_jpeg->jpeg_data_len, 4);
bitstream_putstring(bs, swf_tag_jpeg->jpeg_data, swf_tag_jpeg->jpeg_data_len);
offset_to_alpha = swf_tag_jpeg->jpeg_data_len;
- new_buff = malloc(swf_tag_jpeg->alpha_data_len); // too enough memory
- compress(new_buff, &compsize, swf_tag_jpeg->alpha_data, swf_tag_jpeg->alpha_data_len);
+ old_size = swf_tag_jpeg->alpha_data_len;
+ compsize = old_size;
+ new_buff = malloc(compsize); // too enough memory
+ compress(new_buff, &compsize, swf_tag_jpeg->alpha_data, old_size);
bitstream_putstring(bs, new_buff, compsize);
free(new_buff);
data = bitstream_steal(bs, length);