aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2017-08-31 14:55:11 +0200
committerFlorian Weimer <fweimer@redhat.com>2017-08-31 15:34:22 +0200
commit24cffce7366c4070d8f823702a4fcec2cb732595 (patch)
tree7428e804f158418e87a77d60e1e8a1c3f5b6cbb5
parentecd0747df388f3925d4839740b0abcf43d0a9fb2 (diff)
downloadglibc-24cffce7366c4070d8f823702a4fcec2cb732595.zip
glibc-24cffce7366c4070d8f823702a4fcec2cb732595.tar.gz
glibc-24cffce7366c4070d8f823702a4fcec2cb732595.tar.bz2
malloc: Resolve compilation failure in NDEBUG mode
In _int_free, the locked variable is not used if NDEBUG is defined.
-rw-r--r--ChangeLog5
-rw-r--r--malloc/malloc.c25
2 files changed, 12 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index ce8cb73..79953a7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-08-31 Florian Weimer <fweimer@redhat.com>
+
+ * malloc/malloc.c (_int_free): Remove locked variable and related
+ asserts.
+
2017-08-31 H.J. Lu <hongjiu.lu@intel.com>
[BZ #22051]
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 768670c..e1159a5 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -4106,8 +4106,6 @@ _int_free (mstate av, mchunkptr p, int have_lock)
mchunkptr bck; /* misc temp for linking */
mchunkptr fwd; /* misc temp for linking */
- int locked = 0;
-
size = chunksize (p);
/* Little security check which won't hurt performance: the
@@ -4162,19 +4160,14 @@ _int_free (mstate av, mchunkptr p, int have_lock)
/* We might not have a lock at this point and concurrent modifications
of system_mem might have let to a false positive. Redo the test
after getting the lock. */
- if (have_lock
- || ({ assert (locked == 0);
- __libc_lock_lock (av->mutex);
- locked = 1;
+ if (!have_lock
+ || ({ __libc_lock_lock (av->mutex);
chunksize_nomask (chunk_at_offset (p, size)) <= 2 * SIZE_SZ
- || chunksize (chunk_at_offset (p, size)) >= av->system_mem;
- }))
+ || chunksize (chunk_at_offset (p, size)) >= av->system_mem;
+ }))
malloc_printerr ("free(): invalid next size (fast)");
if (! have_lock)
- {
- __libc_lock_unlock (av->mutex);
- locked = 0;
- }
+ __libc_lock_unlock (av->mutex);
}
free_perturb (chunk2mem(p), size - 2 * SIZE_SZ);
@@ -4211,10 +4204,8 @@ _int_free (mstate av, mchunkptr p, int have_lock)
*/
else if (!chunk_is_mmapped(p)) {
- if (! have_lock) {
+ if (!have_lock)
__libc_lock_lock (av->mutex);
- locked = 1;
- }
nextchunk = chunk_at_offset(p, size);
@@ -4328,10 +4319,8 @@ _int_free (mstate av, mchunkptr p, int have_lock)
}
}
- if (! have_lock) {
- assert (locked);
+ if (!have_lock)
__libc_lock_unlock (av->mutex);
- }
}
/*
If the chunk was allocated via mmap, release via munmap().