diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2022-06-06 20:01:41 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2022-06-07 14:08:30 +0300 |
commit | aabfaeb28ccbc3016aa17d0934b0affb721286cf (patch) | |
tree | f596a1f6c0807c13df602e07cbbd9da321153f14 /malloc.c | |
parent | 0c44b469646fb07cf82a62deed6a7ee693112c8f (diff) | |
download | bdwgc-aabfaeb28ccbc3016aa17d0934b0affb721286cf.tar.gz |
Specify that internal allocations failure is unlikely
(refactoring)
* finalize.c [!GC_NO_FINALIZATION]
(GC_register_disappearing_link_inner): Assume failure of allocation
(resulting in NULL or GC_oom_fn call) is unlikely.
* malloc.c [DBG_HDRS_ALL || GC_GCJ_SUPPORT || !GC_NO_FINALIZATION]
(GC_generic_malloc_inner_ignore_off_page): Likewise.
* malloc.c (GC_generic_malloc): Likewise.
* malloc.c [REDIRECT_MALLOC && !REDIRECT_MALLOC_IN_HEADER] (calloc,
strdup, strndup): Likewise.
* mallocx.c (GC_realloc, GC_memalign, GC_strdup, GC_strndup): Likewise.
* mallocx.c [GC_REQUIRE_WCSDUP] (GC_wcsdup): Likewise.
* specific.c [USE_CUSTOM_SPECIFIC] (GC_setspecific): Likewise.
* typd_mlc.c (GC_make_sequence_descriptor, GC_make_descriptor):
Likewise.
* malloc.c [REDIRECT_MALLOC && !REDIRECT_MALLOC_IN_HEADER] (calloc):
Expect that lb and n are not greater than GC_SQRT_SIZE_MAX.
* typd_mlc.c (GC_calloc_explicitly_typed): Likewise.
* typd_mlc.c (GC_add_ext_descriptor): Assume that resizing of
GC_ext_descriptors[] is rare.
* typd_mlc.c (GC_calloc_explicitly_typed): Do not call
GC_make_array_descriptor() if n * lb > GC_SIZE_MAX.
* malloc.c [REDIRECT_MALLOC && !REDIRECT_MALLOC_IN_HEADER && !strndup]
(strndup): Expect that len is not greater than size.
* mallocx.c (GC_strndup): Likewise.
* typd_mlc.c (GC_make_sequence_descriptor): Reformat code.
Diffstat (limited to 'malloc.c')
-rw-r--r-- | malloc.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -226,8 +226,9 @@ GC_INNER void * GC_generic_malloc_inner(size_t lb, int k) GC_ASSERT(k < MAXOBJKINDS); lb_adjusted = ADD_SLOP(lb); op = GC_alloc_large_and_clear(lb_adjusted, k, IGNORE_OFF_PAGE); - if (op != NULL) + if (EXPECT(op != NULL, TRUE)) { GC_bytes_allocd += lb_adjusted; + } return op; } #endif @@ -288,7 +289,7 @@ GC_API GC_ATTR_MALLOC void * GC_CALL GC_generic_malloc(size_t lb, int k) BZERO(result, n_blocks * HBLKSIZE); } } - if (NULL == result) return (*GC_get_oom_fn())(lb); + if (EXPECT(NULL == result, FALSE)) return (*GC_get_oom_fn())(lb); return result; } @@ -486,7 +487,7 @@ GC_API GC_ATTR_MALLOC void * GC_CALL GC_malloc_uncollectable(size_t lb) void * calloc(size_t n, size_t lb) { - if ((lb | n) > GC_SQRT_SIZE_MAX /* fast initial test */ + if (EXPECT((lb | n) > GC_SQRT_SIZE_MAX, FALSE) /* fast initial test */ && lb && n > GC_SIZE_MAX / lb) return (*GC_get_oom_fn())(GC_SIZE_MAX); /* n*lb overflow */ # if defined(GC_LINUX_THREADS) @@ -519,7 +520,7 @@ GC_API GC_ATTR_MALLOC void * GC_CALL GC_malloc_uncollectable(size_t lb) size_t lb = strlen(s) + 1; char *result = (char *)REDIRECT_MALLOC_F(lb); - if (NULL == result) { + if (EXPECT(NULL == result, FALSE)) { errno = ENOMEM; return NULL; } @@ -537,10 +538,10 @@ GC_API GC_ATTR_MALLOC void * GC_CALL GC_malloc_uncollectable(size_t lb) { char *copy; size_t len = strlen(str); - if (len > size) + if (EXPECT(len > size, FALSE)) len = size; copy = (char *)REDIRECT_MALLOC_F(len + 1); - if (copy == NULL) { + if (EXPECT(NULL == copy, FALSE)) { errno = ENOMEM; return NULL; } |