Description

Defining a FRuntimeFloatCurve inside a code based struct causes the editor to crash if the struct is added as a local variable to a blueprint function and the "Create External Curve" button is pressed.

This crash only occurs if the struct is a local variable of a function.

Steps to Reproduce
  1. Open UE4 Editor
  2. Add code to project based on Actor (MyActor)
  3. Add the following include to MyActor.h:
    #include "Runtime/Engine/Classes/Curves/CurveFloat.h"
    
  4. Add the following struct to MyActor.h between include statements and UCLASS() macro:
    USTRUCT(BlueprintType, Blueprintable)
    struct MYPROJECT11_API FMyCustomCurve
    {
    	GENERATED_BODY()
    public:
    	
    		UPROPERTY(config,BlueprintReadWrite, EditAnywhere, meta = (
    			DisplayName = "Custom Tween Curve",
    			XAxisName = "Alpha", YAxisName = "Value"))
    		FRuntimeFloatCurve CustomCurve;
    };
    
  5. Compile
  6. Create Blueprint based on MyActor (MyActorBP)
  7. Create a function inside blueprint
  8. Add local variable to BP function
  9. Set Local Variable type to My Custom Curve
  10. Compile BP
  11. With variable selected, expand Default Value dropdowns and click Create External Curve button

Result:
Editor crashes with the shown callstack

Expected:
Window for "Choose Location for External Curve Asset" opens when button is clicked.

Callstack
MachineId:7156C35640F86204E61B8383F45DEE17
EpicAccountId:e8c7fa630b6440f69a25a2c64d6c482c

Access violation - code c0000005 (first/second chance not available)

UE4Editor_CoreUObject!UObjectBaseUtility::GetName() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\coreuobject\public\uobject\uobjectbaseutility.h:345]
UE4Editor_DetailCustomizations!FCurveStructCustomization::OnCreateButtonClicked() [d:\build\++ue4+release-4.13+compile\sync\engine\source\editor\detailcustomizations\private\curvestructcustomization.cpp:268]
UE4Editor_DetailCustomizations!TMemberFunctionCaller<FCurveStructCustomization,FReply (__cdecl FCurveStructCustomization::*)(void) __ptr64>::operator()<>() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\public\delegates\delegateinstanceinterface.h:161]
UE4Editor_DetailCustomizations!TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter<TMemberFunctionCaller<FCurveStructCustomization,FReply (__cdecl FCurveStructCustomization::*)(void) __ptr64> >() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\public\delegates\tuple.h:115]
UE4Editor_DetailCustomizations!TBaseSPMethodDelegateInstance<0,FCurveStructCustomization,0,FReply __cdecl(void)>::Execute() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\public\delegates\delegateinstancesimpl.h:317]
UE4Editor_Slate!TBaseDelegate<FReply>::Execute() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\public\delegates\delegatesignatureimpl.inl:521]
UE4Editor_Slate!SButton::OnMouseButtonUp() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\widgets\input\sbutton.cpp:278]
UE4Editor_Slate!<lambda_8d0e9a1da76abd0a756a3a9d775f5ed1>::operator()() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4901]
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_8d0e9a1da76abd0a756a3a9d775f5ed1> >() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:215]
UE4Editor_Slate!FSlateApplication::RoutePointerUpEvent() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:4890]
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5348]
UE4Editor_Slate!FSlateApplication::OnMouseUp() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\slate\private\framework\application\slateapplication.cpp:5328]
UE4Editor_Core!FWindowsApplication::ProcessDeferredMessage() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:1584]
UE4Editor_Core!FWindowsApplication::DeferMessage() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:1930]
UE4Editor_Core!FWindowsApplication::ProcessMessage() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:747]
UE4Editor_Core!FWindowsApplication::AppWndProc() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\private\windows\windowsapplication.cpp:669]
user32
user32
UE4Editor_Core!FWindowsPlatformMisc::PumpMessages() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\core\private\windows\windowsplatformmisc.cpp:905]
UE4Editor!FEngineLoop::Tick() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\launch\private\launchengineloop.cpp:2788]
UE4Editor!GuardedMain() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\launch\private\launch.cpp:156]
UE4Editor!GuardedMainWrapper() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
UE4Editor!WinMain() [d:\build\++ue4+release-4.13+compile\sync\engine\source\runtime\launch\private\windows\launchwindows.cpp:202]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
kernel32
ntdll

Have Comments or More Details?

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

0
Login to Vote

Fixed
ComponentUE - Gameplay - Blueprint
Affects Versions4.13
Target Fix4.16
Fix Commit3253983
Main Commit3255791
CreatedSep 6, 2016
ResolvedJan 11, 2017
UpdatedFeb 5, 2017