malloc: Resolve compilation failure in NDEBUG mode

In _int_free, the locked variable is not used if NDEBUG is defined.
This commit is contained in:
Florian Weimer 2017-08-31 14:55:11 +02:00
parent ecd0747df3
commit 24cffce736
2 changed files with 12 additions and 18 deletions

View File

@ -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> 2017-08-31 H.J. Lu <hongjiu.lu@intel.com>
[BZ #22051] [BZ #22051]

View File

@ -4106,8 +4106,6 @@ _int_free (mstate av, mchunkptr p, int have_lock)
mchunkptr bck; /* misc temp for linking */ mchunkptr bck; /* misc temp for linking */
mchunkptr fwd; /* misc temp for linking */ mchunkptr fwd; /* misc temp for linking */
int locked = 0;
size = chunksize (p); size = chunksize (p);
/* Little security check which won't hurt performance: the /* 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 /* 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 of system_mem might have let to a false positive. Redo the test
after getting the lock. */ after getting the lock. */
if (have_lock if (!have_lock
|| ({ assert (locked == 0); || ({ __libc_lock_lock (av->mutex);
__libc_lock_lock (av->mutex);
locked = 1;
chunksize_nomask (chunk_at_offset (p, size)) <= 2 * SIZE_SZ 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)"); malloc_printerr ("free(): invalid next size (fast)");
if (! have_lock) if (! have_lock)
{ __libc_lock_unlock (av->mutex);
__libc_lock_unlock (av->mutex);
locked = 0;
}
} }
free_perturb (chunk2mem(p), size - 2 * SIZE_SZ); 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)) { else if (!chunk_is_mmapped(p)) {
if (! have_lock) { if (!have_lock)
__libc_lock_lock (av->mutex); __libc_lock_lock (av->mutex);
locked = 1;
}
nextchunk = chunk_at_offset(p, size); nextchunk = chunk_at_offset(p, size);
@ -4328,10 +4319,8 @@ _int_free (mstate av, mchunkptr p, int have_lock)
} }
} }
if (! have_lock) { if (!have_lock)
assert (locked);
__libc_lock_unlock (av->mutex); __libc_lock_unlock (av->mutex);
}
} }
/* /*
If the chunk was allocated via mmap, release via munmap(). If the chunk was allocated via mmap, release via munmap().