MCPcopy Index your code
hub / github.com/dcodeIO/webassembly / dlrealloc

Function dlrealloc

lib/dlmalloc/malloc.c:5180–5223  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5178#if !ONLY_MSPACES
5179
5180void* dlrealloc(void* oldmem, size_t bytes) {
5181 void* mem = 0;
5182 if (oldmem == 0) {
5183 mem = dlmalloc(bytes);
5184 }
5185 else if (bytes >= MAX_REQUEST) {
5186 MALLOC_FAILURE_ACTION;
5187 }
5188#ifdef REALLOC_ZERO_BYTES_FREES
5189 else if (bytes == 0) {
5190 dlfree(oldmem);
5191 }
5192#endif /* REALLOC_ZERO_BYTES_FREES */
5193 else {
5194 size_t nb = request2size(bytes);
5195 mchunkptr oldp = mem2chunk(oldmem);
5196#if ! FOOTERS
5197 mstate m = gm;
5198#else /* FOOTERS */
5199 mstate m = get_mstate_for(oldp);
5200 if (!ok_magic(m)) {
5201 USAGE_ERROR_ACTION(m, oldmem);
5202 return 0;
5203 }
5204#endif /* FOOTERS */
5205 if (!PREACTION(m)) {
5206 mchunkptr newp = try_realloc_chunk(m, oldp, nb, 1);
5207 POSTACTION(m);
5208 if (newp != 0) {
5209 check_inuse_chunk(m, newp);
5210 mem = chunk2mem(newp);
5211 }
5212 else {
5213 mem = internal_malloc(m, bytes);
5214 if (mem != 0) {
5215 size_t oc = chunksize(oldp) - overhead_for(oldp);
5216 memcpy(mem, oldmem, (oc < bytes)? oc : bytes);
5217 internal_free(m, oldmem);
5218 }
5219 }
5220 }
5221 }
5222 return mem;
5223}
5224
5225void* dlrealloc_in_place(void* oldmem, size_t bytes) {
5226 void* mem = 0;

Callers 1

reallocFunction · 0.85

Calls 3

dlmallocFunction · 0.85
try_realloc_chunkFunction · 0.85
memcpyFunction · 0.85

Tested by

no test coverage detected