]> granicus.if.org Git - libvpx/commitdiff
internal stats: fix mem leak and initialize memory
authorMatthias Räncker <theonetruecamper@gmx.de>
Fri, 21 Sep 2018 12:23:44 +0000 (14:23 +0200)
committerMatthias Räncker <theonetruecamper@gmx.de>
Fri, 21 Sep 2018 12:47:51 +0000 (14:47 +0200)
Without calloc valgrind reports usuage of uninitialized data in
vpx_get_ssim_metrics.

Signed-off-by: Matthias Räncker <theonetruecamper@gmx.de>
Change-Id: I9cd38b8031ea3f22c1436894ddaf9e0ccf5a654e

vp9/encoder/vp9_encoder.c

index 7ba08f2d63643fef3889c2e11d878baeec832440..c9c5c1e9af4862274ba061d9c86057da2e800ede 100644 (file)
@@ -2236,9 +2236,11 @@ VP9_COMP *vp9_create_compressor(VP9EncoderConfig *oxcf,
 
   if (cpi->b_calculate_consistency) {
     CHECK_MEM_ERROR(cm, cpi->ssim_vars,
-                    vpx_malloc(sizeof(*cpi->ssim_vars) * 4 *
-                               cpi->common.mi_rows * cpi->common.mi_cols));
+                    vpx_calloc(cpi->common.mi_rows * cpi->common.mi_cols,
+                               sizeof(*cpi->ssim_vars) * 4));
     cpi->worst_consistency = 100.0;
+  } else {
+    cpi->ssim_vars = NULL;
   }
 
 #endif
@@ -2466,6 +2468,10 @@ void vp9_remove_compressor(VP9_COMP *cpi) {
 
   if (!cpi) return;
 
+#if CONFIG_INTERNAL_STATS
+  vpx_free(cpi->ssim_vars);
+#endif
+
   cm = &cpi->common;
   if (cm->current_video_frame > 0) {
 #if CONFIG_INTERNAL_STATS
@@ -2537,7 +2543,6 @@ void vp9_remove_compressor(VP9_COMP *cpi) {
 
       fclose(f);
     }
-
 #endif
 
 #if 0