Code

fix leak of the arena and arenaitem
authorbuliabyak <buliabyak@users.sourceforge.net>
Tue, 16 Sep 2008 16:37:23 +0000 (16:37 +0000)
committerbuliabyak <buliabyak@users.sourceforge.net>
Tue, 16 Sep 2008 16:37:23 +0000 (16:37 +0000)
src/dialogs/iconpreview.cpp
src/dialogs/stroke-style.cpp

index 3994ba454e6f098c0fcf96b9797ea996624539c3..c3d15d83073fa82af570838c8d2914841e466b21 100644 (file)
@@ -268,7 +268,6 @@ void IconPreviewPanel::renderPreview( SPObject* obj )
     /* Create ArenaItem and set transform */
     unsigned int visionkey = sp_item_display_key_new(1);
 
-    /* fixme: Memory manage root if needed (Lauris) */
     root = sp_item_invoke_show ( SP_ITEM( SP_DOCUMENT_ROOT(doc) ),
                                  arena, visionkey, SP_ITEM_SHOW_DISPLAY );
 
@@ -285,6 +284,9 @@ void IconPreviewPanel::renderPreview( SPObject* obj )
         images[i]->queue_draw();
     }
     updateMagnify();
+
+    sp_item_invoke_hide(SP_ITEM(sp_document_root(doc)), visionkey);
+    nr_object_unref((NRObject *) arena);
 }
 
 void IconPreviewPanel::updateMagnify()
index fe23516ba1a8cfa970f0ebc93eb67b6e5cad99fe..fe621e4f148feaedf82573afc15b7c1c5308a21a 100644 (file)
@@ -688,6 +688,9 @@ sp_marker_menu_build (Gtk::Menu *m, GSList *marker_list, SPDocument *source, SPD
 
         m->append(*i);
     }
+
+    sp_item_invoke_hide(SP_ITEM(sp_document_root(sandbox)), visionkey);
+    nr_object_unref((NRObject *) arena);
 }
 
 /**