diff options
author | L. E. Segovia <amy@centricular.com> | 2024-04-09 14:00:32 -0300 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2024-04-15 18:38:56 +0000 |
commit | 58fed88f2c9e32c2a7043eab7bb9688b47d95e93 (patch) | |
tree | d3bd28f2f176cea1c06bbc007e8a1e051e1b58ef | |
parent | b90179d94a08495a7d40f5ae55ca13642e233f1b (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.c | 15 |
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) { |