glib: in finalize-inheritance :after method, ensure that superclasses are finalized
authorDmitry Kalyanov <Kalyanov.Dmitry@gmail.com>
Fri, 16 Oct 2009 23:54:44 +0000 (03:54 +0400)
committerDmitry Kalyanov <Kalyanov.Dmitry@gmail.com>
Fri, 16 Oct 2009 23:54:44 +0000 (03:54 +0400)
glib/gobject.meta.lisp

index ad01dea..67c579e 100755 (executable)
@@ -72,6 +72,8 @@
     (at-init (object) (initialize-gobject-class-g-type object))))
 
 (defmethod finalize-inheritance :after ((class gobject-class))
+  (iter (for superclass in (class-direct-superclasses class))
+        (unless (class-finalized-p superclass) (finalize-inheritance superclass)))
   (setf (gobject-class-g-type-name class)
         (or (gobject-class-direct-g-type-name class)
             (let ((gobject-superclass (iter (for superclass in (class-direct-superclasses class))