[ASan] Rename ReplaceCFAllocator to MaybeReplaceCFAllocator.
authorAlexander Potapenko <glider@google.com>
Wed, 24 Oct 2012 09:35:23 +0000 (09:35 +0000)
committerAlexander Potapenko <glider@google.com>
Wed, 24 Oct 2012 09:35:23 +0000 (09:35 +0000)
Replace the allocator only if the replace_cfallocator flag is set (in some cases it wasn't checked)

llvm-svn: 166550

compiler-rt/lib/asan/asan_mac.cc
compiler-rt/lib/asan/asan_mac.h
compiler-rt/lib/asan/asan_malloc_mac.cc

index f3ea770..3ff8470 100644 (file)
@@ -133,11 +133,11 @@ bool AsanInterceptsSignal(int signum) {
 void AsanPlatformThreadInit() {
   // For the first program thread, we can't replace the allocator before
   // __CFInitialize() has been called. If it hasn't, we'll call
-  // ReplaceCFAllocator() later on this thread.
+  // MaybeReplaceCFAllocator() later on this thread.
   // For other threads __CFInitialize() has been called before their creation.
   // See also asan_malloc_mac.cc.
   if (((CFRuntimeBase*)kCFAllocatorSystemDefault)->_cfisa) {
-    ReplaceCFAllocator();
+    MaybeReplaceCFAllocator();
   }
 }
 
index 67143d7..be91386 100644 (file)
@@ -50,7 +50,7 @@ extern "C" void __CFInitialize();
 namespace __asan {
 
 int GetMacosVersion();
-void ReplaceCFAllocator();
+void MaybeReplaceCFAllocator();
 
 }  // namespace __asan
 
index 5e84d1b..5b47e12 100644 (file)
@@ -97,10 +97,6 @@ INTERCEPTOR(void, free, void *ptr) {
   }
 }
 
-namespace __asan {
-  void ReplaceCFAllocator();
-}
-
 // We can't always replace the default CFAllocator with cf_asan right in
 // ReplaceSystemMalloc(), because it is sometimes called before
 // __CFInitialize(), when the default allocator is invalid and replacing it may
@@ -118,7 +114,7 @@ INTERCEPTOR(void, __CFInitialize, void) {
   CHECK(asan_inited);
 #endif
   REAL(__CFInitialize)();
-  if (!cf_asan && asan_inited) ReplaceCFAllocator();
+  if (!cf_asan && asan_inited) MaybeReplaceCFAllocator();
 }
 
 namespace {
@@ -331,7 +327,7 @@ boolean_t mi_zone_locked(malloc_zone_t *zone) {
 extern int __CFRuntimeClassTableSize;
 
 namespace __asan {
-void ReplaceCFAllocator() {
+void MaybeReplaceCFAllocator() {
   static CFAllocatorContext asan_context = {
         /*version*/ 0, /*info*/ &asan_zone,
         /*retain*/ 0, /*release*/ 0,
@@ -342,7 +338,7 @@ void ReplaceCFAllocator() {
         /*preferredSize*/ 0 };
   if (!cf_asan)
     cf_asan = CFAllocatorCreate(kCFAllocatorUseContext, &asan_context);
-  if (CFAllocatorGetDefault() != cf_asan)
+  if (flags()->replace_cfallocator && CFAllocatorGetDefault() != cf_asan)
     CFAllocatorSetDefault(cf_asan);
 }
 
@@ -410,16 +406,14 @@ void ReplaceSystemMalloc() {
   // Make sure the default allocator was replaced.
   CHECK(malloc_default_zone() == &asan_zone);
 
-  if (flags()->replace_cfallocator) {
-    // If __CFInitialize() hasn't been called yet, cf_asan will be created and
-    // installed as the default allocator after __CFInitialize() finishes (see
-    // the interceptor for __CFInitialize() above). Otherwise install cf_asan
-    // right now. On both Snow Leopard and Lion __CFInitialize() calls
-    // __CFAllocatorInitialize(), which initializes the _base._cfisa field of
-    // the default allocators we check here.
-    if (((CFRuntimeBase*)kCFAllocatorSystemDefault)->_cfisa) {
-      ReplaceCFAllocator();
-    }
+  // If __CFInitialize() hasn't been called yet, cf_asan will be created and
+  // installed as the default allocator after __CFInitialize() finishes (see
+  // the interceptor for __CFInitialize() above). Otherwise install cf_asan
+  // right now. On both Snow Leopard and Lion __CFInitialize() calls
+  // __CFAllocatorInitialize(), which initializes the _base._cfisa field of
+  // the default allocators we check here.
+  if (((CFRuntimeBase*)kCFAllocatorSystemDefault)->_cfisa) {
+    MaybeReplaceCFAllocator();
   }
 }
 }  // namespace __asan