# HG changeset patch
# User Vignesh Vijayakumar <[email protected]>
# Date 1480475946 -19800
#      Wed Nov 30 08:49:06 2016 +0530
# Node ID 64bd8937a908a13326f16ac5da90195abc751568
# Parent  5ae077d7053d76a036d50fd426996cc2e2d3c565
Fix memory leak in fpelMvCosts

diff -r 5ae077d7053d -r 64bd8937a908 source/encoder/bitcost.cpp
--- a/source/encoder/bitcost.cpp        Mon Nov 28 11:35:49 2016 +0530
+++ b/source/encoder/bitcost.cpp        Wed Nov 30 08:49:06 2016 +0530
@@ -56,21 +56,29 @@
     }
     for (int j = 0; j < 4; j++)
     {
-         if (!s_fpelMvCosts[qp][j])
+        if (!s_fpelMvCosts[qp][j])
         {
-            s_fpelMvCosts[qp][j] = X265_MALLOC(uint16_t, BC_MAX_MV + 1) + 
(BC_MAX_MV >> 1);
+            ScopedLock s(s_costCalcLock);
+            if (!s_fpelMvCosts[qp][j])
+            {
+                s_fpelMvCosts[qp][j] = X265_MALLOC(uint16_t, BC_MAX_MV + 1) + 
(BC_MAX_MV >> 1);
+                if (!s_fpelMvCosts[qp][j])
+                {
+                    x265_log(NULL, X265_LOG_ERROR, "BitCost s_fpelMvCosts 
buffer allocation failure\n");
+                    return;
+                }
+                for (int i = -(BC_MAX_MV >> 1); i < (BC_MAX_MV >> 1); i++)
+                {
+                    s_fpelMvCosts[qp][j][i] = s_costs[qp][i * 4 + j];
+                }
+            }
         }
     }
-
+    m_cost = s_costs[qp];
     for (int j = 0; j < 4; j++)
     {
-        for (int i = -(BC_MAX_MV >> 1); i < (BC_MAX_MV >> 1); i++)
-        {
-            s_fpelMvCosts[qp][j][i] = s_costs[qp][i * 4 + j];
-        }
         m_fpelMvCosts[j] = s_fpelMvCosts[qp][j];
     }
-    m_cost = s_costs[qp];
 }
 
 /***
@@ -116,11 +124,12 @@
 
     for (int i = 0; i < BC_MAX_QP; i++)
     {
-        if (s_fpelMvCosts[i][0])
+        for (int j = 0; j < 4; j++)
         {
-            for (int j = 0; j < 4; j++)
+            if (s_fpelMvCosts[i][j])
             {
                 X265_FREE(s_fpelMvCosts[i][j] - (BC_MAX_MV >> 1));
+                s_fpelMvCosts[i][j] = NULL;
             }
         }
     }
_______________________________________________
x265-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/x265-devel

Reply via email to