diff options
author | Ponnam Srinivas <p.srinivas@samsung.com> | 2017-09-20 09:37:59 +0530 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2017-09-20 09:00:10 +0100 |
commit | c53bee067d9d7ed0f8ac010628d13f2a2081fc9b (patch) | |
tree | 1a579726cde72d558b65449223961966cd00667a /ext | |
parent | fb26575b737f08212fdbc704d18fb175552cfe1b (diff) |
pngenc: fix memory leak in error code path
Don't leak row_pointers if frame can't be mapped.
https://bugzilla.gnome.org/show_bug.cgi?id=787885
Diffstat (limited to 'ext')
-rw-r--r-- | ext/libpng/gstpngenc.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/libpng/gstpngenc.c b/ext/libpng/gstpngenc.c index 3d3e116b2..e9050b13a 100644 --- a/ext/libpng/gstpngenc.c +++ b/ext/libpng/gstpngenc.c @@ -304,7 +304,6 @@ gst_pngenc_handle_frame (GstVideoEncoder * encoder, GstVideoCodecFrame * frame) png_set_write_fn (pngenc->png_struct_ptr, pngenc, (png_rw_ptr) user_write_data, user_flush_data); - row_pointers = g_new (png_byte *, GST_VIDEO_INFO_HEIGHT (info)); if (!gst_video_frame_map (&vframe, &pngenc->input_state->info, frame->input_buffer, GST_MAP_READ)) { GST_ELEMENT_ERROR (pngenc, STREAM, FORMAT, (NULL), @@ -313,6 +312,8 @@ gst_pngenc_handle_frame (GstVideoEncoder * encoder, GstVideoCodecFrame * frame) goto done; } + row_pointers = g_new (png_byte *, GST_VIDEO_INFO_HEIGHT (info)); + for (row_index = 0; row_index < GST_VIDEO_INFO_HEIGHT (info); row_index++) { row_pointers[row_index] = GST_VIDEO_FRAME_COMP_DATA (&vframe, 0) + (row_index * GST_VIDEO_FRAME_COMP_STRIDE (&vframe, 0)); |