diff options
author | Yonit Halperin <yhalperi@redhat.com> | 2012-05-10 12:26:01 +0300 |
---|---|---|
committer | Yonit Halperin <yhalperi@redhat.com> | 2012-05-10 14:01:04 +0300 |
commit | fecc1e3d4d3d93ade71a318ad655e85974638162 (patch) | |
tree | b6d263e271322131319449cb3d9fe659cf0064d9 /server/mjpeg_encoder.c | |
parent | ce8e865cf1fcd7ee6ef2e6f8b33506df31e3345e (diff) | |
download | spice-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.c | 11 |
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; } |