webengine/osswebengine/WebCore/rendering/RenderWidget.cpp
changeset 13 10e98eab6f85
parent 0 dd21522fd290
--- a/webengine/osswebengine/WebCore/rendering/RenderWidget.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/rendering/RenderWidget.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -41,12 +41,27 @@
 
 using namespace EventNames;
 
+static HashMap<const Widget*, RenderWidget*>* staticWidgetRendererMap;
+
 static HashMap<const Widget*, RenderWidget*>& widgetRendererMap()
 {
-    static HashMap<const Widget*, RenderWidget*>* staticWidgetRendererMap = new HashMap<const Widget*, RenderWidget*>;
+    if( !staticWidgetRendererMap ) {
+        staticWidgetRendererMap = new HashMap<const Widget*, RenderWidget*>;
+    }
     return *staticWidgetRendererMap;
 }
 
+struct renderMapCleaner {
+    ~renderMapCleaner() {
+        if( staticWidgetRendererMap ) {
+            staticWidgetRendererMap->clear();
+            delete staticWidgetRendererMap;
+            staticWidgetRendererMap = 0;
+        }
+    }
+};
+struct renderMapCleaner renderMapClean;
+
 RenderWidget::RenderWidget(Node* node)
       : RenderReplaced(node)
       , m_widget(0)