在引擎里的 FProjectyChangedEvent 有一个隐藏的bug
/**
* Gets the Array Index of the "current object" based on a particular name
* InName - Name of the property to find the array index for
*/
int32 GetArrayIndex(const FString& InName)
{
//default to unknown index
int32 Retval = -1;
if (ArrayIndicesPerObject.IsValidIndex(ObjectIteratorIndex))
{
const int32* ValuePtr = ArrayIndicesPerObject[ObjectIteratorIndex].Find(InName);
if (ValuePtr)
{
Retval = *ValuePtr;
}
}
return Retval;
}
在这个函数里,当 ValuePtr 获得的值等于 0 的时候,是不会执行 Retval = *ValuePtr; 赋值的
所以判断 ValuePtr是否有效,是不是应该把判断逻辑改为 if (ValuePtr != nullptr) ?