浏览代码

Fixed CeContext leak

Brian Fiete 2 年之前
父节点
当前提交
27a00b64ba
共有 1 个文件被更改,包括 1 次插入2 次删除
  1. 1 2
      IDEHelper/Compiler/BfModuleTypeUtils.cpp

+ 1 - 2
IDEHelper/Compiler/BfModuleTypeUtils.cpp

@@ -2456,6 +2456,7 @@ void BfModule::HandleCEAttributes(CeEmitContext* ceEmitContext, BfTypeInstance*
 
 		SetAndRestoreValue<CeEmitContext*> prevEmitContext(mCompiler->mCeMachine->mCurEmitContext, ceEmitContext);
 		auto ceContext = mCompiler->mCeMachine->AllocContext();
+		defer({ mCompiler->mCeMachine->ReleaseContext(ceContext); });
 
 		BfIRValue attrVal =ceContext->CreateAttribute(customAttribute.mRef, this, typeInstance->mConstHolder, &customAttribute);
 		for (int baseIdx = 0; baseIdx < checkDepth; baseIdx++)
@@ -2592,8 +2593,6 @@ void BfModule::HandleCEAttributes(CeEmitContext* ceEmitContext, BfTypeInstance*
 				UpdateCEEmit(ceEmitContext, typeInstance, customAttribute.mDeclaringType, ctxStr, customAttribute.mRef, BfCeTypeEmitSourceKind_Type);
 			}
 		}
-
-		mCompiler->mCeMachine->ReleaseContext(ceContext);
 	}
 }