diff options
| author | Elliott Hughes <enh@google.com> | 2012-10-12 17:05:05 -0700 |
|---|---|---|
| committer | Elliott Hughes <enh@google.com> | 2012-10-12 17:05:05 -0700 |
| commit | e7e274b13a44a63023f22630ac282ee2e919ffb7 (patch) | |
| tree | 3f11f7205b678be632e15f013ef0443cf706bab3 | |
| parent | 9434e8febc8b223db2d49e7f97140771700113b9 (diff) | |
| download | bionic-e7e274b13a44a63023f22630ac282ee2e919ffb7.zip bionic-e7e274b13a44a63023f22630ac282ee2e919ffb7.tar.gz bionic-e7e274b13a44a63023f22630ac282ee2e919ffb7.tar.bz2 | |
Fix realloc(3) when chk_malloc debugging is on.
The tests for a NULL pointer and size 0 were the wrong way round.
From Intel's patch 9cae4f2ffc4778ed82be04711d8775a84092d4e2.
Change-Id: I118aff3358aa5f34126d74bfaa43f6e2f1a89055
| -rw-r--r-- | libc/bionic/malloc_debug_check.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libc/bionic/malloc_debug_check.cpp b/libc/bionic/malloc_debug_check.cpp index 4190a1d..5ad3486 100644 --- a/libc/bionic/malloc_debug_check.cpp +++ b/libc/bionic/malloc_debug_check.cpp @@ -406,14 +406,16 @@ extern "C" void chk_free(void *ptr) { extern "C" void *chk_realloc(void *ptr, size_t size) { // log_message("%s: %s\n", __FILE__, __FUNCTION__); + if (!ptr) { + return chk_malloc(size); + } + +#ifdef REALLOC_ZERO_BYTES_FREE if (!size) { chk_free(ptr); return NULL; } - - if (!ptr) { - return chk_malloc(size); - } +#endif hdr_t* hdr = meta(ptr); |
