TAttributesContainer::Removeの不具合について

TAttributesContainer内のRemove処理の問題で、CustomAttributesのRemove時にコンテナの中身が削除されなかったり、コンテナ間のサイズに矛盾が生じてASSERTに引っかかり実行が止まってしまいます。

<br/>

TypedArray.Num() == 1の場合に、全てのコンテナからTypeIndexのリストを削除する必要がありますが、この時UniqueTypesの削除ではなくAttributeIdentifiersを削除しています。

AttributeIdentifiresはその後でも削除しているので二重に削除されています。

これによりその後のcheckにてサイズ不一致で引っかかります。

<br/>

また、TypedArray.Num() != 1の場合に、UniqueTypeBoneIndices[TypeIndex]のAttributeIndex要素の削除が行われていません。

これはやらなくても、最終的にはTypeIndexのリストごと削除されると思うので問題ないかも知れません。

<br/>

添付したファイルは問題のメソッドの修正コードです。

修正箇所は2ヶ所あります。

<br/>

<br/>

この問題に対する修正予定がありましたら、修正時期(バージョン)などと共に教えていただきたいです。

また、この問題を回避するためにRemoveをしないようにすることで一時凌ぎしているのですが、その対処方法で問題ないか(リークなどは発生しないかなど)を伺いたいです。

<br/>

よろしくお願いします。

再現手順
カスタムAnimNodeのEvaluateSkeletalControl_AnyThread内で、FComponent​SpacePoseContextのCustomAttributesに値をAddした後、AddしたAttributeをRemoveすると必ず問題(リーク)が発生します。

特に同じ型のAttributeの登録が無くなる際にはサイズ違いでASSERTに引っかかりエディターが停止します。

同じ型のAttributeを複数Addした場合で確認していますが、1つだけでAddしてすぐにRemoveしても発生すると思います。​

お世話になっております。

問題点のご報告誠にありがとうございます。​

TAttributeContainer::Remove()の実装の問題点につきましては、ご指摘の通りかと存じます。調査いたしましたところ、ご提供いただいた修正内容と同等の修正が//UE5/Main CL41097064で施されておりました。よって、お手元で適用された修正は公式の修正と同一のものであり、問題なくお使いいただけると考えております。また、本修正の反映バージョンはUE5.7を予定しております。

以上、よろしくお願いいたします。​