diff -r 1f3c3f2f5b0a -r c711bdda59f4 webengine/widgetengine/src/WidgetEngineBridge.cpp --- a/webengine/widgetengine/src/WidgetEngineBridge.cpp Mon Mar 15 12:44:50 2010 +0200 +++ b/webengine/widgetengine/src/WidgetEngineBridge.cpp Wed Mar 31 23:16:40 2010 +0300 @@ -96,9 +96,10 @@ void WidgetEngineBridge::Clear() { // unprotect objects - HashSet::iterator end = m_protectedObjects.end(); - for (HashSet::iterator it = m_protectedObjects.begin(); it != end; ++it) { - Collector::unprotect(*it); + HashCountedSet::iterator end = m_protectedObjects.end(); + for (HashCountedSet::iterator it = m_protectedObjects.begin(); it != end; ++it) { + for(int count = it->second; count > 0; count--) + Collector::unprotect(it->first); } m_protectedObjects.clear();