From 2335ab2dfaee7b60043df4db84da37da10f616d5 Mon Sep 17 00:00:00 2001 From: "dbaron%dbaron.org" Date: Sat, 11 Aug 2007 00:53:02 +0000 Subject: [PATCH] Lock around NS_TraceMallocDumpAllocations. b=391766 r+a=brendan git-svn-id: svn://10.0.0.236/trunk@231881 18797224-902f-48f8-a5cc-f745e15eee43 --- .../tools/trace-malloc/lib/nsTraceMalloc.c | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/mozilla/tools/trace-malloc/lib/nsTraceMalloc.c b/mozilla/tools/trace-malloc/lib/nsTraceMalloc.c index 77e6954a285..25d6c68bcc2 100644 --- a/mozilla/tools/trace-malloc/lib/nsTraceMalloc.c +++ b/mozilla/tools/trace-malloc/lib/nsTraceMalloc.c @@ -1829,13 +1829,26 @@ NS_TraceMallocDumpAllocations(const char *pathname) { FILE *ofp; int rv; + + tm_thread *t = tm_get_thread(); + + t->suppress_tracing++; + TM_ENTER_LOCK(); + ofp = fopen(pathname, WRITE_FLAGS); - if (!ofp) - return -1; - if (allocations) - PL_HashTableEnumerateEntries(allocations, allocation_enumerator, ofp); - rv = ferror(ofp) ? -1 : 0; - fclose(ofp); + if (ofp) { + if (allocations) + PL_HashTableEnumerateEntries(allocations, allocation_enumerator, + ofp); + rv = ferror(ofp) ? -1 : 0; + fclose(ofp); + } else { + rv = -1; + } + + TM_EXIT_LOCK(); + t->suppress_tracing--; + return rv; }