[vala] codegen: Fix double free with GValue boxing



commit ec58ed2ad3e5f5d5306bc8831015c8ba2a67e1c7
Author: Jürg Billeter <j bitron ch>
Date:   Thu Oct 7 00:07:20 2010 +0200

    codegen: Fix double free with GValue boxing
    
    Fixes bug 631356.

 codegen/valaccodebasemodule.vala |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
---
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index 24c4dee..71368d8 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -4934,7 +4934,8 @@ public class Vala.CCodeBaseModule : CodeGenerator {
 		                        && expression_type.data_type != gvariant_type);
 
 		if (expression_type.value_owned
-		    && (target_type == null || !target_type.value_owned || boxing || unboxing)) {
+		    && (target_type == null || !target_type.value_owned || boxing || unboxing)
+		    && !gvalue_boxing /* gvalue can assume ownership of value, no need to free it */) {
 			// value leaked, destroy it
 			var pointer_type = target_type as PointerType;
 			if (pointer_type != null && !(pointer_type.base_type is VoidType)) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]