Chordian / sidfactory2

SID Factory II is a cross-platform editor for composing music that will work on a Commodore 64. It uses the reSID emulator and is currently in open BETA.
http://blog.chordian.net/sf2/
111 stars 12 forks source link

Crash when opening sf2 file #173

Open micheldebree opened 9 months ago

micheldebree commented 9 months ago

Describe the bug SF2 crashes when I open my SF2 file

To Reproduce

  1. Open the attached file
  2. SF2 crashes

Expected behavior SF2 doesn't crash

Desktop (please complete the following information):

Additional context

The following assertion failes in datasource_orderlist.cpp

DataSourceOrderList::Entry& DataSourceOrderList::operator[](int inIndex)
    {
        FOUNDATION_ASSERT(inIndex < MaxEntryCount);

Call stack:

SIDFactoryII!Editor::DataSourceOrderList::operator[](int) (/Users/michel/Commodore64/Dev/cross-platform/sidfactory2/SIDFactoryII/source/runtime/editor/datasources/datasource_orderlist.cpp:30)
SIDFactoryII!Editor::ComponentOrderListOverview::RebuildOverview() (/Users/michel/Commodore64/Dev/cross-platform/sidfactory2/SIDFactoryII/source/runtime/editor/components/component_orderlistoverview.cpp:1146)
SIDFactoryII!Editor::ComponentOrderListOverview::Refresh(Editor::DisplayState const&) (/Users/michel/Commodore64/Dev/cross-platform/sidfactory2/SIDFactoryII/source/runtime/editor/components/component_orderlistoverview.cpp:430)
SIDFactoryII!Editor::ComponentsManager::Refresh(Editor::DisplayState const&) (/Users/michel/Commodore64/Dev/cross-platform/sidfactory2/SIDFactoryII/source/runtime/editor/components_manager.cpp:462)
SIDFactoryII!Editor::ScreenBase::Refresh() (/Users/michel/Commodore64/Dev/cross-platform/sidfactory2/SIDFactoryII/source/runtime/editor/screens/screen_base.cpp:88)
SIDFactoryII!Editor::ScreenEdit::Refresh() (/Users/michel/Commodore64/Dev/cross-platform/sidfactory2/SIDFactoryII/source/runtime/editor/screens/screen_edit.cpp:396)
SIDFactoryII!Editor::EditorFacility::Update(Foundation::Keyboard const&, Foundation::Mouse const&, int) (/Users/michel/Commodore64/Dev/cross-platform/sidfactory2/SIDFactoryII/source/runtime/editor/editor_facility.cpp:332)
SIDFactoryII!Run(Foundation::IPlatform const&, int, char**) (/Users/michel/Commodore64/Dev/cross-platform/sidfactory2/SIDFactoryII/main.cpp:188)
SIDFactoryII!main (/Users/michel/Commodore64/Dev/cross-platform/sidfactory2/SIDFactoryII/main.cpp:51)
start (Unknown Source:0)

dnb16_editor_crashes.sf2.zip

micheldebree commented 9 months ago

This is easy to reproduce on a new song:

  1. Open Sidfactory2
  2. In the orderlist, copy the first entry in the orderlist (00) (Cmd-C on macOS)
  3. Keep pasting until the orderlist cannot grow anymore (Cmd-V on macOS)
  4. Save the sf2 (F11)
  5. Crash

image

The sf2 file is saved, but opening it crashes the editor again.