Correct bug with redundant g-value-unset. Some change to subtest.
[cl-gtk2.git] / glib / gobject.signals.lisp
index 8659cd1..83436fe 100644 (file)
               (for arg in args)
               (for type = (unmangle-type (mem-aref (foreign-slot-value q 'g-signal-query 'param-types) 'g-type i)))
               (set-g-value (mem-aref params 'g-value (1+ i)) arg type :zero-g-value t))
-        (with-foreign-object (return-value 'g-value)
-          (g-value-zero return-value)
-          (g-value-init return-value (foreign-slot-value q 'g-signal-query 'return-type))
-          (g-signal-emitv params signal-id signal-name return-value)
-          (prog1 (if (= (foreign-slot-value q 'g-signal-query 'return-type)
-                        +g-type-void+)
-                     (values)
-                     (parse-gvalue return-value))
-            (g-value-unset return-value)
-            (iter (for i from 0 below (foreign-slot-value q 'g-signal-query 'n-params))
-                  (g-value-unset (mem-aref params 'g-value (1+ i))))))))))
\ No newline at end of file
+        (prog1
+            (if (= (foreign-slot-value q 'g-signal-query 'return-type) +g-type-void+)
+                (g-signal-emitv params signal-id signal-name (null-pointer))
+                (with-foreign-object (return-value 'g-value)
+                  (g-value-zero return-value)
+                  (g-value-init return-value (foreign-slot-value q 'g-signal-query 'return-type))
+                  (prog1 (parse-gvalue return-value)
+                    (g-value-unset return-value))))
+          (iter (for i from 0 below (foreign-slot-value q 'g-signal-query 'n-params))
+                (g-value-unset (mem-aref params 'g-value (1+ i)))))))))
\ No newline at end of file