make sure to unlock keymgr if the JIT is created and destroyed, all
[oota-llvm.git] / lib / ExecutionEngine / JIT / JIT.cpp
index 57201493e07fda96687fffca5d1e7c639d8f139b..986ec91ede0564d24c30424f1bd073dc6c6f0b5e 100644 (file)
@@ -237,11 +237,9 @@ JIT::JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji,
   // The key is created on demand, and libgcc creates it the first time an
   // exception occurs. Since we need the key to register frames, we create
   // it now.
-  if (!LOI) {
-    LOI = (LibgccObjectInfo*)malloc(sizeof(struct LibgccObjectInfo)); 
-    _keymgr_set_and_unlock_processwide_ptr(KEYMGR_GCC3_DW2_OBJ_LIST,
-                                           LOI);
-  }
+  if (!LOI)
+    LOI = (LibgccObjectInfo*)calloc(sizeof(struct LibgccObjectInfo), 1); 
+  _keymgr_set_and_unlock_processwide_ptr(KEYMGR_GCC3_DW2_OBJ_LIST, LOI);
   InstallExceptionTableRegister(DarwinRegisterFrame);
 #else
   InstallExceptionTableRegister(__register_frame);