From 7c9d8493485c18259b0e06ef3a79d5da4a477237 Mon Sep 17 00:00:00 2001 From: LittleGuo Date: Sun, 25 Oct 2026 17:59:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20GiDrawUtility::Draw?= =?UTF-8?q?Pipe=20=E6=AF=8F=E6=AC=A1=E7=94=BB=E7=AE=A1=E6=B3=84=E6=BC=8F?= =?UTF-8?q?=20region?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除重复调用且丢弃结果的 createRegion(L1:每次调用必漏一个 AcDbRegion) - 内圆 region 创建失败时释放 pBig(L2a) - booleanOper 成功后释放第二个操作数 pSml(L2b,与 AecDbEwPipeBase/AecDbEwFitting 惯例一致) --- SourceCode/Code2026/AecRxBase/GiDrawUtility.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/SourceCode/Code2026/AecRxBase/GiDrawUtility.cpp b/SourceCode/Code2026/AecRxBase/GiDrawUtility.cpp index 54a055d..bd5121b 100644 --- a/SourceCode/Code2026/AecRxBase/GiDrawUtility.cpp +++ b/SourceCode/Code2026/AecRxBase/GiDrawUtility.cpp @@ -674,7 +674,6 @@ AcDbEntity* GiDrawUtility::DrawPipe(const AcGePoint3d& ptFrom { AcDbCircle Cir1(AcGePoint3d::kOrigin, AcGeVector3d::kZAxis, dRadius); - if (!createRegion(&Cir1)) return NULL; AcDbRegion *pBig = createRegion(&Cir1); if (!pBig) return NULL; @@ -683,7 +682,11 @@ AcDbEntity* GiDrawUtility::DrawPipe(const AcGePoint3d& ptFrom { AcDbCircle Cir2(AcGePoint3d::kOrigin, AcGeVector3d::kZAxis, dRadius - dThick); pSml = createRegion(&Cir2); - if (!pSml) return NULL; + if (!pSml) + { + DELETE_PTR(pBig); + return NULL; + } } // 这里做一个布尔减 @@ -696,6 +699,7 @@ AcDbEntity* GiDrawUtility::DrawPipe(const AcGePoint3d& ptFrom DELETE_PTR(pSml); return NULL; } + DELETE_PTR(pSml); } AcDbRegion *pRegion(pBig);