global_motion,alloc_pyramid: add missing alloc checks
missed in:
723bbf9e8 global_motion.c: add missing alloc checks
Bug: aomedia:3276
Change-Id: Ide58d8f826597a2cbece84a9043fa1d7f9935b2f
diff --git a/av1/encoder/global_motion.c b/av1/encoder/global_motion.c
index 7fa0060..5e03d79 100644
--- a/av1/encoder/global_motion.c
+++ b/av1/encoder/global_motion.c
@@ -713,9 +713,18 @@
}
}
+static void free_pyramid(ImagePyramid *pyr) {
+ aom_free(pyr->level_buffer);
+ if (pyr->has_gradient) {
+ aom_free(pyr->level_dx_buffer);
+ aom_free(pyr->level_dy_buffer);
+ }
+ aom_free(pyr);
+}
+
static ImagePyramid *alloc_pyramid(int width, int height, int pad_size,
int compute_gradient) {
- ImagePyramid *pyr = aom_malloc(sizeof(*pyr));
+ ImagePyramid *pyr = aom_calloc(1, sizeof(*pyr));
if (!pyr) return NULL;
pyr->has_gradient = compute_gradient;
// 2 * width * height is the upper bound for a buffer that fits
@@ -724,7 +733,7 @@
(width + 2 * pad_size) * 2 * pad_size * N_LEVELS;
pyr->level_buffer = aom_malloc(buffer_size);
if (!pyr->level_buffer) {
- aom_free(pyr);
+ free_pyramid(pyr);
return NULL;
}
memset(pyr->level_buffer, 0, buffer_size);
@@ -733,23 +742,16 @@
const int gradient_size =
sizeof(*pyr->level_dx_buffer) * 2 * width * height +
(width + 2 * pad_size) * 2 * pad_size * N_LEVELS;
- pyr->level_dx_buffer = aom_malloc(gradient_size);
- pyr->level_dy_buffer = aom_malloc(gradient_size);
- memset(pyr->level_dx_buffer, 0, gradient_size);
- memset(pyr->level_dy_buffer, 0, gradient_size);
+ pyr->level_dx_buffer = aom_calloc(1, gradient_size);
+ pyr->level_dy_buffer = aom_calloc(1, gradient_size);
+ if (!(pyr->level_dx_buffer && pyr->level_dy_buffer)) {
+ free_pyramid(pyr);
+ return NULL;
+ }
}
return pyr;
}
-static void free_pyramid(ImagePyramid *pyr) {
- aom_free(pyr->level_buffer);
- if (pyr->has_gradient) {
- aom_free(pyr->level_dx_buffer);
- aom_free(pyr->level_dy_buffer);
- }
- aom_free(pyr);
-}
-
static INLINE void update_level_dims(ImagePyramid *frm_pyr, int level) {
frm_pyr->widths[level] = frm_pyr->widths[level - 1] >> 1;
frm_pyr->heights[level] = frm_pyr->heights[level - 1] >> 1;