Broken TableListBox


#1

Hi Jules,

After updating to the latest git version I got a crash in TableListBox when used in a PreferencesPanel

Here is the callstack, do this ring a bell ?

Thanks,

Test.exe!juce::OwnedArray<juce::Component,juce::DummyCriticalSection>::set(const int indexToChange=0, const juce::Component * const newObject=0x073fa5a8, const bool deleteOldElement=true) Line 327 C++ Test.exe!juce::TableListRowComp::update(const int newRow=0, const bool isNowSelected=false) Line 108 C++ Test.exe!juce::TableListBox::refreshComponentForRow(int rowNumber=0, bool isRowSelected_=false, juce::Component * existingComponentToUpdate=0x073fa4f0) Line 392 C++ Test.exe!juce::ListBoxRowComponent::update(const int row_=0, const bool selected_=false) Line 64 C++ Test.exe!juce::ListViewport::updateContents() Line 262 C++ Test.exe!juce::ListViewport::updateVisibleArea(const bool makeSureItUpdatesContent=true) Line 226 C++ Test.exe!juce::ListViewport::visibleAreaChanged(int __formal=0, int __formal=0, int __formal=0, int __formal=0) Line 206 C++ Test.exe!juce::Viewport::updateVisibleArea() Line 246 C++ Test.exe!juce::Viewport::componentMovedOrResized(juce::Component & __formal={...}, juce::Component & __formal={...}, juce::Component & __formal={...}) Line 165 C++ Test.exe!juce::ListenerList<juce::ComponentListener,juce::Array<juce::ComponentListener *,juce::DummyCriticalSection> >::callChecked<juce::Component::BailOutChecker,juce::Component &,juce::Component,bool,bool const ,bool,bool const >(const juce::Component::BailOutChecker & bailOutChecker={...}, void (juce::Component &, bool, bool)* callbackFunction=0x010b35a2, juce::Component & param1={...}, const bool & param2=false, const bool & param3=true) Line 215 C++ Test.exe!juce::Component::sendMovedResizedMessages(const bool wasMoved=false, const bool wasResized=true) Line 1001 C++ Test.exe!juce::Component::setBounds(const int x=0, const int y=0, int w=600, int h=44) Line 972 C++ Test.exe!juce::ListViewport::updateVisibleArea(const bool makeSureItUpdatesContent=false) Line 224 C++ Test.exe!juce::ListBox::updateContent() Line 457 C++ Test.exe!juce::ListBox::setMinimumContentWidth(const int newMinimumWidth=600) Line 823 C++ Test.exe!juce::TableListBox::resized() Line 458 C++ Test.exe!juce::Component::sendMovedResizedMessages(const bool wasMoved=false, const bool wasResized=true) Line 983 C++ Test.exe!juce::Component::setBounds(const int x=0, const int y=0, int w=600, int h=400) Line 972 C++ Test.exe!juce::Component::setSize(const int w=600, const int h=400) Line 1008 C++ Test.exe!uvi::PreferencesPanel::createComponentForPage(const juce::String & pageName={...}) Line 187 C++ Test.exe!juce::PreferencesPanel::setCurrentPage(const juce::String & pageName={...}) Line 112 C++ Test.exe!juce::PreferencesPanel::buttonClicked(juce::Button * __formal=0x073f99d8) Line 139 C++ Test.exe!juce::ListenerList<juce::Button::Listener,juce::Array<juce::Button::Listener *,juce::DummyCriticalSection> >::callChecked<juce::Component::BailOutChecker,juce::Button *,juce::Button * const>(const juce::Component::BailOutChecker & bailOutChecker={...}, void (juce::Button *)* callbackFunction=0x010b35a2, juce::Button * const & param1=0x073f99d8) Line 173 C++ Test.exe!juce::Button::sendClickMessage(const juce::ModifierKeys & modifiers={...}) Line 381 C++ Test.exe!juce::Button::internalClickCallback(const juce::ModifierKeys & modifiers={...}) Line 325 C++ Test.exe!juce::Button::mouseUp(const juce::MouseEvent & e={...}) Line 436 C++ Test.exe!juce::Component::internalMouseUp(juce::MouseInputSource & source={...}, const juce::Point<int> & relativePos={...}, const juce::Time & time={...}, const juce::ModifierKeys & oldModifiers={...}) Line 2396 C++ Test.exe!juce::MouseInputSourceInternal::sendMouseUp(juce::Component * const comp=0x073f99d8, const juce::Point<int> & screenPos={...}, const __int64 time=1289917770338) Line 134 C++ Test.exe!juce::MouseInputSourceInternal::setButtons(const juce::Point<int> & screenPos={...}, const __int64 time=1289917770338, const juce::ModifierKeys & newButtonState={...}) Line 166 C++ Test.exe!juce::MouseInputSourceInternal::handleEvent(juce::ComponentPeer * const newPeer=0x07456490, const juce::Point<int> & positionWithinPeer={...}, const __int64 time=1289917770338, const juce::ModifierKeys & newMods={...}) Line 279 C++ Test.exe!juce::MouseInputSource::handleEvent(juce::ComponentPeer * peer=0x07456490, const juce::Point<int> & positionWithinPeer={...}, const __int64 time=1289917770338, const juce::ModifierKeys & mods={...}) Line 531 C++ Test.exe!juce::ComponentPeer::handleMouseEvent(const int touchIndex=0, const juce::Point<int> & positionWithinPeer={...}, const juce::ModifierKeys & newMods={...}, const __int64 time=1289917770338) Line 108 C++ Test.exe!juce::Win32ComponentPeer::doMouseEvent(const juce::Point<int> & position={...}) Line 1395 C++ Test.exe!juce::Win32ComponentPeer::doMouseUp(const juce::Point<int> & position={...}, const unsigned int wParam=0) Line 1498 C++ Test.exe!juce::Win32ComponentPeer::peerWindowProc(HWND__ * h=0x001104fc, unsigned int message=514, unsigned int wParam=0, long lParam=3801207) Line 1939 C++ Test.exe!juce::Win32ComponentPeer::windowProc(HWND__ * h=0x001104fc, unsigned int message=514, unsigned int wParam=0, long lParam=3801207) Line 1855 C++ user32.dll!7e418734() [Frames below may be incorrect and/or missing, no symbols loaded for user32.dll] user32.dll!7e418816() user32.dll!7e4189cd() user32.dll!7e418a10() Test.exe!juce::juce_dispatchNextMessageOnSystemQueue(const bool returnIfNoPendingMessages=true) Line 177 C++ Test.exe!juce::MessageManager::runDispatchLoopUntil(int millisecondsToRunFor=20) Line 166 C++ Test.exe!juce::ModalComponentManager::runEventLoopForCurrentComponent() Line 283 C++ Test.exe!juce::Component::runModalLoop() Line 1436 C++ Test.exe!uvi::PreferencesPanel::showInDialogBox(const juce::String & dialogtitle={...}, int dialogWidth=600, int dialogHeight=400, const juce::Colour & backgroundColour={...}) Line 236 C++ Test.exe!uvi::TestHeader::ShowPreferences() Line 369 C++ Test.exe!fastdelegate::FastDelegate0<void>::operator()() Line 906 C++ Test.exe!uvi::SimpleApplicationCommandTarget::perform(const juce::ApplicationCommandTarget::InvocationInfo & info={...}) Line 43 C++ Test.exe!juce::ApplicationCommandTarget::tryToInvoke(const juce::ApplicationCommandTarget::InvocationInfo & info={...}, const bool async=false) Line 59 C++ Test.exe!juce::ApplicationCommandTarget::CommandTargetMessageInvoker::handleMessage(const juce::Message & message={...}) Line 197 C++ Test.exe!juce::MessageManager::deliverMessage(juce::Message * const message=0x07438870) Line 117 C++ Test.exe!juce::juce_dispatchNextMessageOnSystemQueue(const bool returnIfNoPendingMessages=false) Line 156 C++ Test.exe!juce::MessageManager::runDispatchLoopUntil(int millisecondsToRunFor=-1) Line 166 C++ Test.exe!juce::MessageManager::runDispatchLoop() Line 144 C++ Test.exe!juce::JUCEApplication::main(const juce::String & commandLine={...}) Line 229 C++ Test.exe!WinMain(HINSTANCE__ * __formal=0x00400000, HINSTANCE__ * __formal=0x00400000, HINSTANCE__ * __formal=0x00400000, HINSTANCE__ * __formal=0x00400000) Line 92 C++ Test.exe!__tmainCRTStartup() Line 324 C Test.exe!WinMainCRTStartup() Line 196 C


#2

Hmm, thanks, I’ll figure that out and get something checked in right away…


#3

Thanks.

Let me know if you need more info.