fix: 修复 GiDrawUtility::DrawPipe 每次画管泄漏 region
- 删除重复调用且丢弃结果的 createRegion(L1:每次调用必漏一个 AcDbRegion) - 内圆 region 创建失败时释放 pBig(L2a) - booleanOper 成功后释放第二个操作数 pSml(L2b,与 AecDbEwPipeBase/AecDbEwFitting 惯例一致)
This commit is contained in:
1 parent
fead8cccac
commit
7c9d849348
1 file changed
+6
-2
@@ -674,7 +674,6 @@ AcDbEntity* GiDrawUtility::DrawPipe(const AcGePoint3d& ptFrom
|
|||||||
{
|
{
|
||||||
AcDbCircle Cir1(AcGePoint3d::kOrigin, AcGeVector3d::kZAxis, dRadius);
|
AcDbCircle Cir1(AcGePoint3d::kOrigin, AcGeVector3d::kZAxis, dRadius);
|
||||||
|
|
||||||
if (!createRegion(&Cir1)) return NULL;
|
|
||||||
AcDbRegion *pBig = createRegion(&Cir1);
|
AcDbRegion *pBig = createRegion(&Cir1);
|
||||||
if (!pBig) return NULL;
|
if (!pBig) return NULL;
|
||||||
|
|
||||||
@@ -683,7 +682,11 @@ AcDbEntity* GiDrawUtility::DrawPipe(const AcGePoint3d& ptFrom
|
|||||||
{
|
{
|
||||||
AcDbCircle Cir2(AcGePoint3d::kOrigin, AcGeVector3d::kZAxis, dRadius - dThick);
|
AcDbCircle Cir2(AcGePoint3d::kOrigin, AcGeVector3d::kZAxis, dRadius - dThick);
|
||||||
pSml = createRegion(&Cir2);
|
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);
|
DELETE_PTR(pSml);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
DELETE_PTR(pSml);
|
||||||
}
|
}
|
||||||
|
|
||||||
AcDbRegion *pRegion(pBig);
|
AcDbRegion *pRegion(pBig);
|
||||||
|
|||||||
Reference in new issue
Block a user