VP9RateControlRTC::Create: check segmentation_map alloc
authorJames Zern <jzern@google.com>
Wed, 27 Apr 2022 02:15:40 +0000 (19:15 -0700)
committerJames Zern <jzern@google.com>
Wed, 27 Apr 2022 02:18:14 +0000 (19:18 -0700)
Change-Id: I17b23915c32accf834def5ab26a8e4e188f9993a

vp9/ratectrl_rtc.cc

index 76ff367..f4d7f7e 100644 (file)
@@ -25,7 +25,10 @@ std::unique_ptr<VP9RateControlRTC> VP9RateControlRTC::Create(
                                                 VP9RateControlRTC());
   if (!rc_api) return nullptr;
   rc_api->cpi_ = static_cast<VP9_COMP *>(vpx_memalign(32, sizeof(*cpi_)));
-  if (!rc_api->cpi_) return nullptr;
+  if (!rc_api->cpi_) {
+    rc_api.reset();
+    return nullptr;
+  }
   vp9_zero(*rc_api->cpi_);
 
   rc_api->InitRateControl(cfg);
@@ -34,6 +37,10 @@ std::unique_ptr<VP9RateControlRTC> VP9RateControlRTC::Create(
     cpi->segmentation_map = static_cast<uint8_t *>(
         vpx_calloc(cpi->common.mi_rows * cpi->common.mi_cols,
                    sizeof(*cpi->segmentation_map)));
+    if (!cpi->segmentation_map) {
+      rc_api.reset();
+      return nullptr;
+    }
     cpi->cyclic_refresh =
         vp9_cyclic_refresh_alloc(cpi->common.mi_rows, cpi->common.mi_cols);
     cpi->cyclic_refresh->content_mode = 0;