[vala] codegen: Fix memory leak with owned delegate parameters in async methods
- From: JÃrg Billeter <juergbi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] codegen: Fix memory leak with owned delegate parameters in async methods
- Date: Sat, 8 Sep 2012 05:38:03 +0000 (UTC)
commit 590dd689b90909f7ed27c097a7014f7a8cba8dcf
Author: JÃrg Billeter <j bitron ch>
Date: Sat Sep 8 07:20:42 2012 +0200
codegen: Fix memory leak with owned delegate parameters in async methods
Fixes bug 683600.
codegen/valagasyncmodule.vala | 15 ++++++++++++---
1 files changed, 12 insertions(+), 3 deletions(-)
---
diff --git a/codegen/valagasyncmodule.vala b/codegen/valagasyncmodule.vala
index eaa3979..1716b71 100644
--- a/codegen/valagasyncmodule.vala
+++ b/codegen/valagasyncmodule.vala
@@ -264,10 +264,19 @@ public class Vala.GAsyncModule : GSignalModule {
var old_captured = param.captured;
param.captured = false;
current_method.coroutine = false;
- var value = load_parameter (param);
- if (requires_copy (param_type) && !param.variable_type.value_owned) {
- value = copy_value (value, param);
+
+ TargetValue value;
+ if (param.variable_type.value_owned) {
+ // do not use load_parameter for reference/ownership transfer
+ // otherwise delegate destroy notify will not be moved
+ value = get_parameter_cvalue (param);
+ } else {
+ value = load_parameter (param);
+ if (requires_copy (param_type)) {
+ value = copy_value (value, param);
+ }
}
+
current_method.coroutine = true;
store_parameter (param, value);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]