aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2011-12-22 11:38:32 -0500
committerUlrich Drepper <drepper@gmail.com>2011-12-22 11:38:32 -0500
commit41043168619f1bcb12a718792b052703b9d69e91 (patch)
tree6294b149f293472d4a91b50f4d4451c6bd59d70a
parentb7763303bfe01853eb4b5d034414e445e8c6a7b5 (diff)
downloadglibc-41043168619f1bcb12a718792b052703b9d69e91.zip
glibc-41043168619f1bcb12a718792b052703b9d69e91.tar.gz
glibc-41043168619f1bcb12a718792b052703b9d69e91.tar.bz2
Optimize tr_freehook
-rw-r--r--ChangeLog4
-rw-r--r--NEWS6
-rw-r--r--malloc/mtrace.c8
3 files changed, 12 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index b8ea695..0544a05 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2011-12-22 Ulrich Drepper <drepper@gmail.com>
+ [BZ #13328]
+ * malloc/mtrace.c (tr_freehook): Avoid unnecessary unlock/lock.
+ Proposed by Mariusz_Cukr <marcukr@op.pl>.
+
* sysdeps/x86_64/fpu/bits/fenv.h: Use __REDIRECT_NTH for
__feraiseexcept_renamed.
diff --git a/NEWS b/NEWS
index bdf996e..a10415d 100644
--- a/NEWS
+++ b/NEWS
@@ -12,9 +12,9 @@ Version 2.15
6779, 6783, 9696, 10103, 10709, 11589, 12403, 12847, 12868, 12852, 12874,
12885, 12892, 12907, 12922, 12935, 13007, 13021, 13067, 13068, 13090,
13092, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13179, 13192,
- 13268, 13276, 13291, 13305, 13335, 13337, 13344, 13358, 13367, 13413,
- 13416, 13423, 13439, 13446, 13472, 13484, 13506, 13515, 13523, 13524,
- 13538
+ 13268, 13276, 13291, 13305, 13328, 13335, 13337, 13344, 13358, 13367,
+ 13413, 13416, 13423, 13439, 13446, 13472, 13484, 13506, 13515, 13523,
+ 13524, 13538
* New program pldd to list loaded object of a process
Implemented by Ulrich Drepper.
diff --git a/malloc/mtrace.c b/malloc/mtrace.c
index b55449f..0d0cb35 100644
--- a/malloc/mtrace.c
+++ b/malloc/mtrace.c
@@ -146,10 +146,12 @@ tr_freehook (ptr, caller)
tr_where (caller, info);
/* Be sure to print it first. */
fprintf (mallstream, "- %p\n", ptr);
- __libc_lock_unlock (lock);
if (ptr == mallwatch)
- tr_break ();
- __libc_lock_lock (lock);
+ {
+ __libc_lock_unlock (lock);
+ tr_break ();
+ __libc_lock_lock (lock);
+ }
__free_hook = tr_old_free_hook;
if (tr_old_free_hook != NULL)
(*tr_old_free_hook) (ptr, caller);