summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vala/valagirparser.vala7
1 files changed, 6 insertions, 1 deletions
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index a9c994a2d..e900c6198 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -3723,9 +3723,14 @@ public class Vala.GirParser : CodeVisitor {
var d = ((DelegateType) resolved_type).delegate_symbol;
if (!(d.name == "DestroyNotify" && d.parent_symbol.name == "GLib")) {
info.param.set_attribute_string ("CCode", "scope", "async");
- info.param.variable_type.value_owned = true;
+ info.param.variable_type.value_owned = (info.closure_idx != -1 && info.destroy_idx != -1);
}
}
+ } else {
+ var resolved_type = info.param.variable_type;
+ if (resolved_type is DelegateType) {
+ info.param.variable_type.value_owned = (info.closure_idx != -1 && info.destroy_idx != -1);
+ }
}
}