summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorL. E. Segovia <amy@centricular.com>2024-04-09 14:00:32 -0300
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2024-04-15 18:38:56 +0000
commit58fed88f2c9e32c2a7043eab7bb9688b47d95e93 (patch)
treed3bd28f2f176cea1c06bbc007e8a1e051e1b58ef
parentb90179d94a08495a7d40f5ae55ca13642e233f1b (diff)
orccodemem: Ensure that failure to allocate a new code region is idempotent
Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/176>
-rw-r--r--orc/orccodemem.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/orc/orccodemem.c b/orc/orccodemem.c
index 6431250..5970f27 100644
--- a/orc/orccodemem.c
+++ b/orc/orccodemem.c
@@ -74,7 +74,9 @@ orc_code_region_new (void)
region = malloc(sizeof(OrcCodeRegion));
memset (region, 0, sizeof(OrcCodeRegion));
- orc_code_region_allocate_codemem (region);
+ if (!orc_code_region_allocate_codemem (region);) {
+ return NULL;
+ }
chunk = malloc(sizeof(OrcCodeChunk));
memset (chunk, 0, sizeof(OrcCodeChunk));
@@ -143,13 +145,18 @@ orc_code_region_get_free_chunk (int size)
}
}
+ region = orc_code_region_new ();
+ if (!region)
+ return NULL;
+
orc_code_regions = realloc (orc_code_regions,
sizeof(void *)*(orc_code_n_regions+1));
- if (!orc_code_regions)
+ if (!orc_code_regions) {
+ free(region);
return NULL;
+ }
- orc_code_regions[orc_code_n_regions] = orc_code_region_new ();
- region = orc_code_regions[orc_code_n_regions];
+ orc_code_regions[orc_code_n_regions] = region;
orc_code_n_regions++;
for(chunk = region->chunks; chunk; chunk = chunk->next) {