From 574694415a9e220ca94c8da4cfbcbffd07f906a5 Mon Sep 17 00:00:00 2001 From: auria Date: Sat, 1 May 2010 17:17:10 +0000 Subject: [PATCH] Fixed crash in dynamic ribbon widget git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@5332 178a84e3-b1eb-0310-8ba1-8eac791a3b58 --- .../widgets/dynamic_ribbon_widget.cpp | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/guiengine/widgets/dynamic_ribbon_widget.cpp b/src/guiengine/widgets/dynamic_ribbon_widget.cpp index acc3c9ba0..ed956ff60 100644 --- a/src/guiengine/widgets/dynamic_ribbon_widget.cpp +++ b/src/guiengine/widgets/dynamic_ribbon_widget.cpp @@ -777,26 +777,30 @@ void DynamicRibbonWidget::update(float dt) for (int i=0; i= (int)m_items.size()) item_id -= m_items.size(); + + assert(item_id >= 0); + assert(item_id < (int)m_items.size()); + //m_items[icon_id]. - if (m_items[icon_id].m_animated) + if (m_items[item_id].m_animated) { - const int frameBefore = (int)(m_items[icon_id].m_curr_time / m_items[icon_id].m_time_per_frame); + const int frameBefore = (int)(m_items[item_id].m_curr_time / m_items[item_id].m_time_per_frame); - m_items[icon_id].m_curr_time += dt; - int frameAfter = (int)(m_items[icon_id].m_curr_time / m_items[icon_id].m_time_per_frame); + m_items[item_id].m_curr_time += dt; + int frameAfter = (int)(m_items[item_id].m_curr_time / m_items[item_id].m_time_per_frame); if (frameAfter == frameBefore) continue; // no frame change yet - if (frameAfter >= (int)m_items[icon_id].m_all_images.size()) + if (frameAfter >= (int)m_items[item_id].m_all_images.size()) { - m_items[icon_id].m_curr_time = 0; + m_items[item_id].m_curr_time = 0; frameAfter = 0; } IconButtonWidget* icon = dynamic_cast(&row.m_children[i]); - icon->setImage( m_items[icon_id].m_all_images[frameAfter].c_str() ); + icon->setImage( m_items[item_id].m_all_images[frameAfter].c_str() ); } }