memory leak
"Walter C. Pelissero" <[email protected]> Fri, 20 Jul 2007 18:35:01 +0200
| Newsgroups | gmane.lisp.clg.devel |
|---|---|
| Message-ID | <[email protected]> |
The following ugly patches, based on just a very superficial
understanding of CLG innards, seem to fix the memory leak in the list
and tree stores. I'm not sure, though, the leak hasn't deeper roots.
As far as I know it could be that any object ending in a container may
suffer of this reference count problem; I haven't checked it.
--
walter pelissero
http://www.pelissero.de
Index: gtktree.lisp
===================================================================
RCS file: /cvsroot/clg/clg/gtk/gtktree.lisp,v
retrieving revision 1.27
diff -c -r1.27 gtktree.lisp
*** gtktree.lisp 10 May 2007 20:20:05 -0000 1.27
--- gtktree.lisp 20 Jul 2007 16:24:50 -0000
***************
*** 117,123 ****
(defmethod (setf tree-model-value) (value (store list-store) row column)
(let* ((index (tree-model-column-index store column))
(type (tree-model-get-column-type store index)))
! (with-gvalue (gvalue type value)
(%list-store-set-value store (ensure-tree-iter store row) index gvalue)))
value)
--- 117,128 ----
(defmethod (setf tree-model-value) (value (store list-store) row column)
(let* ((index (tree-model-column-index store column))
(type (tree-model-get-column-type store index)))
! (with-memory (gvalue +gvalue-size+)
! (glib::%gvalue-init gvalue (find-type-number type))
! (funcall (writer-function type :temp t) value gvalue +gvalue-value-offset+)
! (%list-store-set-value store (ensure-tree-iter store row) index gvalue)
! nil)
! #+(OR)(with-gvalue (gvalue type value)
(%list-store-set-value store (ensure-tree-iter store row) index gvalue)))
value)
***************
*** 703,709 ****
(defmethod (setf tree-model-value) (value (store tree-store) row column)
(let* ((index (tree-model-column-index store column))
(type (tree-model-get-column-type store index)))
! (with-gvalue (gvalue type value)
(%tree-store-set-value store (ensure-tree-iter store row) index gvalue)))
value)
--- 707,718 ----
(defmethod (setf tree-model-value) (value (store tree-store) row column)
(let* ((index (tree-model-column-index store column))
(type (tree-model-get-column-type store index)))
! (with-memory (gvalue +gvalue-size+)
! (glib::%gvalue-init gvalue (find-type-number type))
! (funcall (writer-function type :temp t) value gvalue +gvalue-value-offset+)
! (%tree-store-set-value store (ensure-tree-iter store row) index gvalue)
! nil)
! #+(OR)(with-gvalue (gvalue type value)
(%tree-store-set-value store (ensure-tree-iter store row) index gvalue)))
value)
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/