# 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