From 6ba2fd96667c072265eb7f2972901a0ac2738436 Mon Sep 17 00:00:00 2001 From: rivo Date: Thu, 15 Jan 2015 13:05:03 +0300 Subject: [PATCH] fixed variant sub-iterator leak --- dbus/dbus.scm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/dbus/dbus.scm b/dbus/dbus.scm index ca14d92..2384f0b 100644 --- a/dbus/dbus.scm +++ b/dbus/dbus.scm @@ -548,9 +548,12 @@ (let ([v (iter->vector (make-sub-iter iter))]) (if (auto-unbox-structs) v (vector->struct v)))] [(eq? type type-variant) - (if (auto-unbox-variants) - ((make-sub-iter iter)) - (make-variant ((make-sub-iter iter))))] + (let* ((sub (make-sub-iter iter)) + (data (sub))) + (sub);terminate sub iterator + (if (auto-unbox-variants) + data + (make-variant data)))] ;; todo: unsupported so far (not understood well enough): ;; type-object-path and type-signature -- 1.9.1