![](https://seccdn.libravatar.org/avatar/660f918b95fb16b6bf617ac05c9637e3.jpg?s=120&d=mm&r=g)
Author: rpmcruz Date: Tue Sep 23 18:44:59 2008 New Revision: 51432 URL: http://svn.opensuse.org/viewcvs/yast?rev=51432&view=rev Log: * src/YGWidget.cc: bug fix 421794: clean any emitted event when destroyed. The new libyui crashes when doing YWidget::isValid() for a destroyed widget due to memory overwrite. Modified: trunk/gtk/ChangeLog trunk/gtk/src/YGLayout.cc trunk/gtk/src/YGUI.cc trunk/gtk/src/YGUI.h trunk/gtk/src/YGWidget.cc Modified: trunk/gtk/ChangeLog URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/ChangeLog?rev=51432&r1=51431&r2=51432&view=diff ============================================================================== --- trunk/gtk/ChangeLog (original) +++ trunk/gtk/ChangeLog Tue Sep 23 18:44:59 2008 @@ -1,3 +1,9 @@ +2008-09-23 Ricardo Cruz <rpmcruz@alunos.dcc.fc.up.pt> + + * src/YGWidget.cc: bug fix 421794: clean any emitted event when + destroyed. The new libyui crashes when doing YWidget::isValid() + for a destroyed widget due to memory overwrite. + 2008-09-21 Ricardo Cruz <rpmcruz@alunos.dcc.fc.up.pt> * src/YGText.cc: set MultiLineEdit wrap mode as WORD_CHAR. Modified: trunk/gtk/src/YGLayout.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGLayout.cc?rev=51432&r1=51431&r2=51432&view=diff ============================================================================== --- trunk/gtk/src/YGLayout.cc (original) +++ trunk/gtk/src/YGLayout.cc Tue Sep 23 18:44:59 2008 @@ -111,6 +111,7 @@ YGWidget (this, parent, true, YGTK_TYPE_FIXED, NULL) { setBorder (0); + // YUI system variable test for layout policy doesn't work flawlessly setLayoutPolicy (gnomeLayoutPolicy()); YGLAYOUT_INIT } Modified: trunk/gtk/src/YGUI.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGUI.cc?rev=51432&r1=51431&r2=51432&view=diff ============================================================================== --- trunk/gtk/src/YGUI.cc (original) +++ trunk/gtk/src/YGUI.cc Tue Sep 23 18:44:59 2008 @@ -198,7 +198,6 @@ normalCursor(); // waiting for input, so no more busy guint timeout = 0; - YEvent *event = NULL; if (timeout_ms > 0) timeout = g_timeout_add (timeout_ms, @@ -211,6 +210,7 @@ else while (g_main_context_iteration (NULL, FALSE)) ; + YEvent *event = NULL; if (pendingEvent()) event = m_event_handler.consumePendingEvent(); Modified: trunk/gtk/src/YGUI.h URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGUI.h?rev=51432&r1=51431&r2=51432&view=diff ============================================================================== --- trunk/gtk/src/YGUI.h (original) +++ trunk/gtk/src/YGUI.h Tue Sep 23 18:44:59 2008 @@ -46,7 +46,7 @@ // called by YDialog::waitInput() / pollEvent()... YEvent *waitInput (unsigned long timeout_ms, bool block); - virtual YEvent * runPkgSelection (YWidget *packageSelector); + virtual YEvent *runPkgSelection (YWidget *packageSelector); // used internally: for public use, see YApplication void busyCursor(); Modified: trunk/gtk/src/YGWidget.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/gtk/src/YGWidget.cc?rev=51432&r1=51431&r2=51432&view=diff ============================================================================== --- trunk/gtk/src/YGWidget.cc (original) +++ trunk/gtk/src/YGWidget.cc Tue Sep 23 18:44:59 2008 @@ -53,6 +53,8 @@ YGWidget::~YGWidget() { IMPL + if (YGUI::ui()->eventPendingFor (m_ywidget)) + YGUI::ui()->m_event_handler.consumePendingEvent(); // remove children if container? #if 0 struct inner { -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org