]> git.saurik.com Git - apple/security.git/blobdiff - cdsa/cdsa_utilities/globalizer.h
Security-163.tar.gz
[apple/security.git] / cdsa / cdsa_utilities / globalizer.h
index 793d779c7f785af117fcc0dbea4b4e5709ae7881..d709bd261b9b1777e37040ae711cc692547c540e 100644 (file)
@@ -72,7 +72,11 @@ public:
     Type &operator () ()
     {
         AtomicWord p = pointer;        // latch pointer
-        return *reinterpret_cast<Type *>((p && !(p & 0x1)) ? p : create(make));
+               if (!p || (p & 0x1)) {
+                       p = create(make);
+                       secdebug("nexus", "module %s 0x%x", Debug::typeName<Type>().c_str(), pointer);
+               }
+               return *reinterpret_cast<Type *>(p);
     }
     
     void reset()
@@ -92,7 +96,7 @@ class CleanModuleNexus : public ModuleNexus<Type> {
 public:
     ~CleanModuleNexus()
     {
-        debug("nexus", "ModuleNexus %p destroyed object 0x%x", this, pointer);
+        secdebug("nexus", "ModuleNexus %p destroyed object 0x%x", this, pointer);
         delete reinterpret_cast<Type *>(pointer);
     }
 };
@@ -127,7 +131,7 @@ class CleanModuleNexus : public ModuleNexus<Type> {
 public:
     ~CleanModuleNexus()
     {
-        debug("nexus", "ModuleNexus %p destroyed object 0x%x", this, mSingleton);
+        secdebug("nexus", "ModuleNexus %p destroyed object 0x%x", this, mSingleton);
         delete mSingleton;
     }
 };