Description

Inside SCurveEditor::ZoomToFitHorizontal and SCurveEditor::ZoomToFitVertical, the program navigates through a TArray<FRealCurve*> called CurvesToFit in a for each loop. Inside the for loop, if the program tries to access one of the properties of the curve, the program crashes.

Steps to Reproduce

1- Create a custom FTableRowBase child class that exposes a FRuntimeFloatCurve:

 

USTRUCT(BlueprintType)
struct FSomeDataRowBase : public FTableRowBase 
{
    GENERATED_USTRUCT_BODY()
    UPROPERTY(EditAnywhere)
    FRuntimeFloatCurve CurveVariable;
};

 

2- Create a DataTable of the TableRow type just created.

3- Open it and it should crash. If it doesn't, rename the file and try to open it again.

Callstack

SCurveEditor::ZoomToFitVertical(const bool) SCurveEditor.cpp:2699
SCurveEditor::SetCurveOwner(FCurveOwnerInterface *, bool) SCurveEditor.cpp:1302
FCurveStructCustomization::CustomizeHeader(TSharedRef<…>, FDetailWidgetRow &, IPropertyTypeCustomizationUtils &) CurveStructCustomization.cpp:154
FDetailPropertyRow::OnItemNodeInitialized(TSharedRef<…>, const TAttribute<…> &, TSharedPtr<…>) DetailPropertyRow.cpp:296
FDetailItemNode::InitPropertyEditor() DetailItemNode.cpp:154
FDetailItemNode::Initialize() DetailItemNode.cpp:45
FDetailCategoryImpl::GenerateNodesFromCustomizations(const TArray<…> &, TArray<…> &) DetailCategoryBuilderImpl.cpp:1001
FDetailCategoryImpl::GenerateChildrenForSingleLayout(const FDetailLayout &, const TArray<…> &, TArray<…> &) DetailCategoryBuilderImpl.cpp:1023
FDetailCategoryImpl::GenerateChildrenForLayouts() DetailCategoryBuilderImpl.cpp:1044
FDetailCategoryImpl::GenerateLayout() DetailCategoryBuilderImpl.cpp:1210
FDetailLayoutBuilderImpl::BuildCategories(const TMap<…> &, TArray<…> &, TArray<…> &) DetailLayoutBuilderImpl.cpp:316
FDetailLayoutBuilderImpl::GenerateDetailLayout() DetailLayoutBuilderImpl.cpp:446
SDetailsViewBase::UpdateSinglePropertyMap(TSharedPtr<…>, FDetailLayoutData &, bool) SDetailsViewBase.cpp:665
SDetailsViewBase::UpdatePropertyMaps() SDetailsViewBase.cpp:608
SStructureDetailsView::SetStructureProvider(TSharedPtr<…>) SStructureDetailsView.cpp:262
SStructureDetailsView::SetStructureData(TSharedPtr<…>) SStructureDetailsView.cpp:212
SRowEditor::Restore() SRowEditor.cpp:234
SRowEditor::ConstructInternal(UDataTable *) SRowEditor.cpp:456
[Inlined] SRowEditor::Construct(const SRowEditor::FArguments &, UDataTable *) SRowEditor.cpp:432
[Inlined] RequiredArgs::T1RequiredArgs::CallConstruct(SRowEditor *, const SRowEditor::FArguments &) DeclarativeSyntaxSupport.h:761
TSlateDecl::operator<<=(const SRowEditor::FArguments &) DeclarativeSyntaxSupport.h:975
FDataTableEditor::CreateRowEditorBox() DataTableEditor.cpp:1329
FDataTableEditor::CreateAndRegisterRowEditorTab(const TSharedRef<…> &) DataTableEditor.cpp:171
SStandaloneAssetEditorToolkitHost::OnToolkitHostingStarted(const TSharedRef<…> &) SStandaloneAssetEditorToolkitHost.cpp:332
FToolkitManager::RegisterNewToolkit(TSharedRef<…>) ToolkitManager.cpp:54
FAssetEditorToolkit::InitAssetEditor(Type, const TSharedPtr<…> &, FName, const TSharedRef<…> &, const bool, const bool, const TArray<…> &, const bool, const bool) AssetEditorToolkit.cpp:231
FAssetEditorToolkit::InitAssetEditor(Type, const TSharedPtr<…> &, FName, const TSharedRef<…> &, const bool, const bool, UObject *, const bool, const bool) AssetEditorToolkit.cpp:64
FDataTableEditor::InitDataTableEditor(Type, const TSharedPtr<…> &, UDataTable *) DataTableEditor.cpp:294
FDataTableEditorModule::CreateStandardDataTableEditor(Type, const TSharedPtr<…> &, UDataTable *) DataTableEditorModule.cpp:48
FDataTableEditorModule::CreateDataTableEditor(Type, const TSharedPtr<…> &, UDataTable *) DataTableEditorModule.cpp:42
UAssetDefinition_DataTable::OpenAssets(const FAssetOpenArgs &) AssetDefinition_DataTable.cpp:150
FAssetDefinitionProxy::OpenAssetEditor(const TArray<…> &, EAssetTypeActivationOpenedMethod, TSharedPtr<…>) AssetTools.cpp:244
UAssetEditorSubsystem::OpenEditorForAsset(UObject *, Type, TSharedPtr<…>, const bool, EAssetTypeActivationOpenedMethod) AssetEditorSubsystem.cpp:579
UAssetEditorSubsystem::OpenEditorForAssets_Advanced(const TArray<…> &, Type, TSharedPtr<…>, EAssetTypeActivationOpenedMethod) AssetEditorSubsystem.cpp:645
UAssetEditorSubsystem::OpenEditorForAssets(const TArray<…> &, EAssetTypeActivationOpenedMethod) AssetEditorSubsystem.cpp:760
ContentBrowserAssetData::EditOrPreviewAssetFileItems(TArrayView<…>, Type, EAssetTypeActivationOpenedMethod) ContentBrowserAssetDataCore.cpp:372
ContentBrowserAssetData::EditOrPreviewItems(IAssetTools *, const UContentBrowserDataSource *, TArrayView<…>, Type, EAssetTypeActivationOpenedMethod) ContentBrowserAssetDataCore.cpp:417
[Inlined] ContentBrowserAssetData::EditItems(IAssetTools *, const UContentBrowserDataSource *, TArrayView<…>) ContentBrowserAssetDataCore.cpp:424
UContentBrowserAssetDataSource::BulkEditItems(TArrayView<…>) ContentBrowserAssetDataSource.cpp:2199
SContentBrowser::OnItemsActivated(TArrayView<…>, Type) SContentBrowser.cpp:3141
[Inlined] Invoke(void (SContentBrowser::*)(TArrayView<…>, EAssetTypeActivationMethod::Type), SContentBrowser *&, TArrayView<…> &&, EAssetTypeActivationMethod::Type &&) Invoke.h:66
[Inlined] UE::Core::Private::Tuple::TTupleBase::ApplyAfter(void (SContentBrowser::*&)(TArrayView<…>, EAssetTypeActivationMethod::Type), SContentBrowser *&, TArrayView<…> &&, EAssetTypeActivationMethod::Type &&) Tuple.h:311
TBaseSPMethodDelegateInstance::Execute(TArrayView<…>, Type) DelegateInstancesImpl.h:281
[Inlined] TDelegate::Execute(TArrayView<…>, Type) DelegateSignatureImpl.inl:549
SAssetView::OnOpenAssetsOrFolders() SAssetView.cpp:3611
[Inlined] Invoke(void (SContentBrowser::*)(), SContentBrowser *&) Invoke.h:66
[Inlined] UE::Core::Private::Tuple::TTupleBase::ApplyAfter(void (SContentBrowser::*&)(), SContentBrowser *&) Tuple.h:311
TBaseSPMethodDelegateInstance::ExecuteIfSafe() DelegateInstancesImpl.h:298
TDelegate::ExecuteIfBound<…>() DelegateSignatureImpl.inl:570
FUICommandList::ConditionalProcessCommandBindings(FKey, bool, bool, bool, bool, bool) UICommandList.cpp:235
FUICommandList::ProcessCommandBindings(const FKeyEvent &) UICommandList.cpp:178
SContentBrowser::OnKeyDown(const FGeometry &, const FKeyEvent &) SContentBrowser.cpp:1900
[Inlined] FSlateApplication::ProcessKeyDownEvent::__l22::<lambda_2>::operator()(const FArrangedWidget &, const FKeyEvent &) SlateApplication.cpp:4714
FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FKeyEvent,`FSlateApplication::ProcessKeyDownEvent'::`22'::<lambda_2> >(FSlateApplication *,FBubblePolicy,FKeyEvent,const <lambda_2> &,ESlateDebuggingInputEvent) SlateApplication.cpp:447
[Inlined] FEventRouter::RouteAlongFocusPath(FSlateApplication *, FBubblePolicy, FKeyEvent, const <lambda_2> &, ESlateDebuggingInputEvent) SlateApplication.cpp:416
FSlateApplication::ProcessKeyDownEvent(const FKeyEvent &) SlateApplication.cpp:4710
FSlateApplication::OnKeyDown(const int, const unsigned int, const bool) SlateApplication.cpp:4621
FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage &) WindowsApplication.cpp:2063
FWindowsApplication::DeferMessage(TSharedPtr<…> &, HWND__ *, unsigned int, unsigned long long, long long, int, int, unsigned int) WindowsApplication.cpp:2738
FWindowsApplication::ProcessMessage(HWND__ *, unsigned int, unsigned long long, long long) WindowsApplication.cpp:1099
[Inlined] WindowsApplication_WndProc(HWND__ *, unsigned int, unsigned long long, long long) WindowsApplication.cpp:931
FWindowsApplication::AppWndProc(HWND__ *, unsigned int, unsigned long long, long long) WindowsApplication.cpp:936
<unknown> 0x00007ffbcf9aef75
<unknown> 0x00007ffbcf9ae69d
[Inlined] WinPumpMessages() WindowsPlatformApplicationMisc.cpp:119
FWindowsPlatformApplicationMisc::PumpMessages(bool) WindowsPlatformApplicationMisc.cpp:148
FEngineLoop::Tick() LaunchEngineLoop.cpp:5743
[Inlined] EngineTick() Launch.cpp:61
GuardedMain(const wchar_t *) Launch.cpp:190
LaunchWindowsStartup(HINSTANCE__ *, HINSTANCE__ *, char *, int, const wchar_t *) LaunchWindows.cpp:247
WinMain(HINSTANCE__ *, HINSTANCE__ *, char *, int) LaunchWindows.cpp:298
[Inlined] invoke_main() 0x00007ff7a48d9d3a
__scrt_common_main_seh() 0x00007ff7a48d9d19
<unknown> 0x00007ffbceff7344
<unknown> 0x00007ffbd0ec26b1

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-213155 in the post.

0
Login to Vote

Unresolved
ComponentUE - Editor
Affects Versions5.3
CreatedApr 24, 2024
UpdatedApr 25, 2024