Description

When using an FLinearColor variable in a data table and editing it using the color picker, clicking anywhere off of the color picker window will cause the editor to crash.

Error Message:

Assertion failed: (Index >= 0) & (Index < ArrayNum) [Link Removed] [Line: 804] Array index out of bounds: 0 from an array of size 0

Source Context:

  337       {
  338       Result = FPropertyAccess::Fail;
  339       break;
  340       }
  341       }
  342       }
  343       
  344       if( Result != FPropertyAccess::Fail )
  345       {
  346       UWorld* OldGWorld = nullptr;
  347       
  348       bool bIsGameWorld = false;
  349       // If the object we are modifying is in the PIE world, than make the PIE world the active
  350       // GWorld.  Assumes all objects managed by this property window belong to the same world.
  351 ***** if (UPackage* ObjectPackage = (InObjects[0].Object ? InObjects[0].Object->GetOutermost() : nullptr))
  352       {
  353       const bool bIsPIEPackage = ObjectPackage->HasAnyPackageFlags(PKG_PlayInEditor);
  354       if (GUnrealEd && GUnrealEd->PlayWorld && bIsPIEPackage && !GIsPlayInEditorWorld)
  355       {
  356       OldGWorld = SetPlayInEditorWorld(GUnrealEd->PlayWorld);
  357       bIsGameWorld = true;
  358       }
  359       }
  360       ///////////////
  361       
  362       // Send the values and assemble a list of pre/posteditchange values.
  363       bool bNotifiedPreChange = false;
  364       UObject *NotifiedObj = nullptr;
  365       TArray< TMap<FString,int32> > ArrayIndicesPerObject;
  366       

Logs:
[Link Removed]

Steps to Reproduce

1. Open the editor
2. Create a new C++ class based on Actor
3. In the .h, above the UCLASS(), add this code:

USTRUCT()
struct FMyStruct : public FTableRowBase
{
	GENERATED_USTRUCT_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FLinearColor ColorVariable;
};

4. Build the project in Visual Studio
5. In the editor, create a data table that inherits from your C++ struct
6. Open the data table and add 2 new rows
7. Open the color picker and select a color from the wheel
8. With the color picker open, click the unselected row

Result: Editor crashes.

Expected: No crash would occur.

Callstack
UE4Editor_PropertyEditor!FPropertyValueImpl::ImportText() propertyhandleimpl.cpp:352 
UE4Editor_PropertyEditor!FPropertyHandleBase::SetPerObjectValues() propertyhandleimpl.cpp:1886 
UE4Editor_DetailCustomizations!FColorStructCustomization::OnColorPickerCancelled() colorstructcustomization.cpp:291 
UE4Editor_DetailCustomizations!TBaseSPMethodDelegateInstance<0,FColorStructCustomization,0,TTypeWrapper<void> __cdecl() delegateinstancesimpl_variadics.inl:321 
UE4Editor_AppFramework!SColorPicker::DiscardColor() scolorpicker.cpp:700 
UE4Editor_AppFramework!SColorPicker::HandleParentWindowClosed() scolorpicker.cpp:1494 
UE4Editor_AppFramework!TBaseSPMethodDelegateInstance<0,SColorPicker,0,TTypeWrapper<void> __cdecl() delegateinstancesimpl_variadics.inl:321 
UE4Editor_AppFramework!TBaseSPMethodDelegateInstance<0,SColorPicker,0,void __cdecl() delegateinstancesimpl_variadics.inl:428 
UE4Editor_SlateCore!SWindow::NotifyWindowBeingDestroyed() swindow.cpp:1155 
UE4Editor_Slate!FSlateApplication::PrivateDestroyWindow() slateapplication.cpp:5798 
UE4Editor_Slate!FSlateApplication::DestroyWindowsImmediately() slateapplication.cpp:2647 
UE4Editor_Slate!FSlateApplication::RequestDestroyWindow() slateapplication.cpp:2102 
UE4Editor_SlateCore!SWindow::RequestDestroyWindow() swindow.cpp:1140 
UE4Editor_AppFramework!DestroyColorPicker() scolorpicker.cpp:1706 
UE4Editor_PropertyEditor!SStructureDetailsView::SetStructureData() sstructuredetailsview.cpp:197 
UE4Editor_DataTableEditor!SRowEditor::CleanBeforeChange() sroweditor.cpp:128 
UE4Editor_DataTableEditor!SRowEditor::OnSelectionChanged() sroweditor.cpp:228 
UE4Editor_DataTableEditor!SRowEditor::SelectRow() sroweditor.cpp:254 
UE4Editor_DataTableEditor!TBaseSPMethodDelegateInstance<0,SRowEditor,0,void __cdecl() delegateinstancesimpl_variadics.inl:428 
UE4Editor_DataTableEditor!FDataTableEditor::OnRowSelectionChanged() datatableeditor.cpp:385 
UE4Editor_DataTableEditor!TBaseSPMethodDelegateInstance<0,FDataTableEditor,0,TTypeWrapper<void> __cdecl() delegateinstancesimpl_variadics.inl:321 
UE4Editor_DataTableEditor!TBaseSPMethodDelegateInstance<0,FDataTableEditor,0,void __cdecl() delegateinstancesimpl_variadics.inl:428 
UE4Editor_DataTableEditor!TBaseDelegate<void,TSharedPtr<FDataTableEditorRowListViewData,0>,enum ESelectInfo::Type>::ExecuteIfBound() delegatesignatureimpl_variadics.inl:608 
UE4Editor_DataTableEditor!SListView<TSharedPtr<FDataTableEditorRowListViewData,0> >::Private_SignalSelectionChanged() slistview.h:618 
UE4Editor_DataTableEditor!FDataTableEditor::SetHighlightedRow() datatableeditor.cpp:733 
UE4Editor_DataTableEditor!FDataTableEditor::OnRowSelectionChanged() datatableeditor.cpp:383 
UE4Editor_DataTableEditor!TBaseSPMethodDelegateInstance<0,FDataTableEditor,0,TTypeWrapper<void> __cdecl() delegateinstancesimpl_variadics.inl:321 
UE4Editor_DataTableEditor!TBaseSPMethodDelegateInstance<0,FDataTableEditor,0,void __cdecl() delegateinstancesimpl_variadics.inl:428 
UE4Editor_DataTableEditor!TBaseDelegate<void,TSharedPtr<FDataTableEditorRowListViewData,0>,enum ESelectInfo::Type>::ExecuteIfBound() delegatesignatureimpl_variadics.inl:608 
UE4Editor_DataTableEditor!SListView<TSharedPtr<FDataTableEditorRowListViewData,0> >::Private_SignalSelectionChanged() slistview.h:618 
UE4Editor_DataTableEditor!SListView<TSharedPtr<FDataTableEditorRowListViewData,0> >::OnMouseButtonDown() slistview.h:367 
UE4Editor_Slate!<lambda_7097b900f0e4be30d80fb18f98c51ea0>::operator() slateapplication.cpp:4518 
UE4Editor_Slate!FEventRouter::Route<FReply,FEventRouter::FBubblePolicy,FPointerEvent,<lambda_7097b900f0e4be30d80fb18f98c51ea0> >() slateapplication.cpp:215 
UE4Editor_Slate!FSlateApplication::RoutePointerDownEvent() slateapplication.cpp:4507 
UE4Editor_Slate!FSlateApplication::ProcessMouseButtonDownEvent() slateapplication.cpp:4465 
UE4Editor_Slate!FSlateApplication::OnMouseDown() slateapplication.cpp:4399 
UE4Editor_Core!FWindowsApplication::ProcessDeferredMessage() windowsapplication.cpp:1518 
UE4Editor_Core!FWindowsApplication::DeferMessage() windowsapplication.cpp:1850 
UE4Editor_Core!FWindowsApplication::ProcessMessage() windowsapplication.cpp:745 
UE4Editor_Core!FWindowsApplication::AppWndProc() windowsapplication.cpp:667 
user32!<Unknown> 
user32!<Unknown> 
UE4Editor_Core!FWindowsPlatformMisc::PumpMessages() windowsplatformmisc.cpp:903 
UE4Editor!FEngineLoop::Tick() launchengineloop.cpp:2729 
UE4Editor!GuardedMain() launch.cpp:148 
UE4Editor!GuardedMainWrapper() launchwindows.cpp:126 
UE4Editor!WinMain() launchwindows.cpp:200 
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.

0
Login to Vote

Fixed
ComponentTools
Affects Versions4.114.124.13
Target Fix4.13
Fix Commit3037981
Main Commit3050870
CreatedJun 29, 2016
ResolvedJul 5, 2016
UpdatedMay 2, 2018