Description

A crash occurs from the change of inner struct value with TMap variable of an outer struct. This crash does not occur if you change the variable type as a substitution for the last step.

Regression:
This issue does not occur before 4.14 as TMaps were not an added feature until 4.15

Steps to Reproduce
  1. Create a new project (No template or starter content needed)
  2. Create a new Struct > Name it InnerStruct
  3. Create a new Struct > Name it OuterStruct > Open OuterStruct
  4. Change the Variable type to InnerStruct and Make it an array
  5. Save and close Outerstruct
  6. Create a new Actor Class Blueprint > Name it Actor_BP > Open Actor_BP
  7. Add a new variable > Name it MapVar > Change its variable type to INT and Make it a TMap
  8. Set MapVar's pin type to INT and the Value type to OuterStruct
  9. Open InnerStruct and change the value of the boolean var
    Result: The editor crashes
    Expected result: The editor updates the value of the struct and both OuterStruct and Actor_BP become dirty
Callstack
Assertion failed: GetOuter()->IsA(UClass::StaticClass()) [File:D:\Build\++UE4+Release-4.15+Compile\Sync\Engine\Source\Runtime\CoreUObject\Public\UObject/UnrealType.h] [Line: 341]
UE4Editor_KismetCompiler!FUserDefinedStructureCompilerUtils::DefaultUserDefinedStructs() userdefinedstructurecompilerutils.cpp:476
UE4Editor_KismetCompiler!FKismetCompilerContext::Compile() kismetcompiler.cpp:3810 
UE4Editor_KismetCompiler!FKismet2CompilerModule::CompileBlueprintInner() kismetcompilermodule.cpp:130 
UE4Editor_KismetCompiler!FKismet2CompilerModule::CompileBlueprint() kismetcompilermodule.cpp:230 
UE4Editor_UnrealEd!FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified() blueprinteditorutils.cpp:2124 
UE4Editor_KismetCompiler!FUserDefinedStructureCompilerUtils::CompileStruct() userdefinedstructurecompilerutils.cpp:452 
UE4Editor_KismetCompiler!FKismet2CompilerModule::CompileStructure() kismetcompilermodule.cpp:178 
UE4Editor_UnrealEd!FStructureEditorUtils::CompileStructure() structureeditorutils.cpp:554 
UE4Editor_UnrealEd!FStructureEditorUtils::OnStructureChanged() structureeditorutils.cpp:566 
UE4Editor_UnrealEd!FStructureEditorUtils::ChangeVariableDefaultValue() structureeditorutils.cpp:455 
UE4Editor_Kismet!FDefaultValueDetails::OnFinishedChangingProperties() userdefinedstructureeditor.cpp:224 
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FDefaultValueDetails,0,TTypeWrapper<void> __cdecl() delegateinstancesimpl.h:327
UE4Editor_Kismet!TBaseSPMethodDelegateInstance<0,FDefaultValueDetails,0,void __cdecl() delegateinstancesimpl.h:434 
UE4Editor_PropertyEditor!TBaseMulticastDelegate<void,FPropertyChangedEvent const & __ptr64>::Broadcast() delegatesignatureimpl.inl:937
UE4Editor_PropertyEditor!FPropertyValueImpl::ImportText() propertyhandleimpl.cpp:582 
UE4Editor_PropertyEditor!FPropertyValueImpl::ImportText() propertyhandleimpl.cpp:361 
UE4Editor_PropertyEditor!FPropertyHandleBool::SetValue() propertyhandleimpl.cpp:2984 
UE4Editor_PropertyEditor!SPropertyEditorBool::OnCheckStateChanged() spropertyeditorbool.cpp:79 
UE4Editor_PropertyEditor!TBaseSPMethodDelegateInstance<0,SPropertyEditorBool,0,TTypeWrapper<void> __cdecl() delegateinstancesimpl.h:327
UE4Editor_PropertyEditor!TBaseSPMethodDelegateInstance<0,SPropertyEditorBool,0,void __cdecl() delegateinstancesimpl.h:434 
UE4Editor_Slate!SCheckBox::ToggleCheckedState() scheckbox.cpp:299 
UE4Editor_Slate!SCheckBox::OnMouseButtonUp() scheckbox.cpp:190 
UE4Editor_Slate!<lambda_8d0e9a1da76abd0a756a3a9d775f5ed1>::operator() slateapplication.cpp:5075 
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_8d0e9a1da76abd0a756a3a9d775f5ed1> >() slateapplication.cpp:238
UE4Editor_Slate!FSlateApplication::RoutePointerUpEvent() slateapplication.cpp:5064 
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() slateapplication.cpp:5531 
UE4Editor_Slate!FSlateApplication::OnMouseUp() slateapplication.cpp:5508 
UE4Editor_Core!FWindowsApplication::ProcessDeferredMessage() windowsapplication.cpp:1698 
UE4Editor_Core!FWindowsApplication::DeferMessage() windowsapplication.cpp:2120 
UE4Editor_Core!FWindowsApplication::ProcessMessage() windowsapplication.cpp:867 
UE4Editor_Core!FWindowsApplication::AppWndProc() windowsapplication.cpp:714 
user32!<Unknown> 
user32!<Unknown> 
UE4Editor_Core!FWindowsPlatformMisc::PumpMessages() windowsplatformmisc.cpp:980 
UE4Editor!FEngineLoop::Tick() launchengineloop.cpp:2977 
UE4Editor!GuardedMain() launch.cpp:166 
UE4Editor!GuardedMainWrapper() launchwindows.cpp:134 
UE4Editor!WinMain() launchwindows.cpp:210 
UE4Editor!__scrt_common_main_seh() exe_common.inl:264 
kernel32!<Unknown> 
ntdll!<Unknown> 

Have Comments or More Details?

Head over to the existing Questions & Answers thread and let us know what's up.

1
Login to Vote

Fixed
ComponentUE - Gameplay - Blueprint
Affects Versions4.15.24.16
Target Fix4.17
Fix Commit3491022
Main Commit3510073
CreatedMay 22, 2017
ResolvedJun 15, 2017
UpdatedApr 27, 2018