summaryrefslogtreecommitdiffstats
path: root/server/mjpeg_encoder.c
diff options
context:
space:
mode:
authorYonit Halperin <yhalperi@redhat.com>2012-05-10 12:26:01 +0300
committerYonit Halperin <yhalperi@redhat.com>2012-05-10 14:01:04 +0300
commitfecc1e3d4d3d93ade71a318ad655e85974638162 (patch)
treeb6d263e271322131319449cb3d9fe659cf0064d9 /server/mjpeg_encoder.c
parentce8e865cf1fcd7ee6ef2e6f8b33506df31e3345e (diff)
downloadspice-fecc1e3d4d3d93ade71a318ad655e85974638162.tar.gz
spice-fecc1e3d4d3d93ade71a318ad655e85974638162.tar.xz
spice-fecc1e3d4d3d93ade71a318ad655e85974638162.zip
server/mjpeg_encoder: Fix memory leak for the inital output buffer given for each frame
Diffstat (limited to 'server/mjpeg_encoder.c')
-rw-r--r--server/mjpeg_encoder.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/server/mjpeg_encoder.c b/server/mjpeg_encoder.c
index 9c3d0796..3c2fc31c 100644
--- a/server/mjpeg_encoder.c
+++ b/server/mjpeg_encoder.c
@@ -101,7 +101,6 @@ typedef struct {
unsigned char ** outbuffer; /* target buffer */
size_t * outsize;
- unsigned char * newbuffer; /* newly allocated buffer */
uint8_t * buffer; /* start of buffer */
size_t bufsize;
} mem_destination_mgr;
@@ -125,9 +124,7 @@ static boolean empty_mem_output_buffer(j_compress_ptr cinfo)
memcpy(nextbuffer, dest->buffer, dest->bufsize);
- free(dest->newbuffer);
-
- dest->newbuffer = nextbuffer;
+ free(dest->buffer);
dest->pub.next_output_byte = nextbuffer + dest->bufsize;
dest->pub.free_in_buffer = dest->bufsize;
@@ -180,12 +177,10 @@ spice_jpeg_mem_dest(j_compress_ptr cinfo,
dest->pub.term_destination = term_mem_destination;
dest->outbuffer = outbuffer;
dest->outsize = outsize;
- dest->newbuffer = NULL;
-
if (*outbuffer == NULL || *outsize == 0) {
/* Allocate initial buffer */
- dest->newbuffer = *outbuffer = malloc(OUTPUT_BUF_SIZE);
- if (dest->newbuffer == NULL)
+ *outbuffer = malloc(OUTPUT_BUF_SIZE);
+ if (*outbuffer == NULL)
ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 10);
*outsize = OUTPUT_BUF_SIZE;
}