| 5178 | #if !ONLY_MSPACES |
| 5179 | |
| 5180 | void* 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 | |
| 5225 | void* dlrealloc_in_place(void* oldmem, size_t bytes) { |
| 5226 | void* mem = 0; |
no test coverage detected