fix: GetInterface 数组版 bSizeUnLock 被 memset 清成 false

inf.bSizeUnLock = true 原来写在循环外,循环内每次都 memset(&inf, 0, ...),
赋值被清掉,数组版返回的接口实际一直是"锁定"状态。

把赋值挪到 memset 之后;循环外那两行初始化(bSizeUnLock / dGasket)删掉,
memset 之后本来就是 0。

bSizeUnLock 目前只在 i_AecDbXEquipment.cpp 里序列化,没有读取判断的地方,
所以此前没暴露成故障。
This commit is contained in:
company-desktop committed 2026-10-25 12:10:09 +08:00
1 parent 6a375aea75
commit e448dbacfd
2 files changed
+2 -3

No files matched your search

@@ -3280,8 +3280,6 @@ bool AecDbEwEquipment::GetInterface(AcArray<AecInterface>& arInfs) const
}
AecInterface inf;
inf.bSizeUnLock = true;//不锁定
inf.dGasket = 0;
AecEqui::XPrimData* p3dSolid(NULL);
for (int i = 0; i < m_arSubPrimPtrs.GetSize(); i++)
@@ -3292,6 +3290,7 @@ bool AecDbEwEquipment::GetInterface(AcArray<AecInterface>& arInfs) const
if (!pNoze) continue;
::memset(&inf, 0, sizeof(AecInterface));
inf.bSizeUnLock = true; //不锁定;必须放在 memset 之后,否则每次都被清成 false
GetInfFaceInf(p3dSolid, vtDir, ptGe, 1);
ptGe.transformBy(xform);