[vala/emit-let] codegen: Use get_field_cvalue to unref fields.



commit 058e148f00adf3685c070d7b035507efbc93309b
Author: Luca Bruno <lethalman88 gmail com>
Date:   Tue Jan 18 16:49:03 2011 +0100

    codegen: Use get_field_cvalue to unref fields.

 codegen/valaccodebasemodule.vala         |    9 +++++++--
 codegen/valaccodememberaccessmodule.vala |    2 ++
 2 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index 8730ce1..c130e8c 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -2721,8 +2721,13 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
 	}
 
 	public CCodeExpression get_unref_expression (CCodeExpression cvar, DataType type, Expression? expr, bool is_macro_definition = false) {
-		if (expr != null && (expr.symbol_reference is LocalVariable || expr.symbol_reference is Parameter)) {
-			return get_unref_expression_ (expr.symbol_reference);
+		if (expr != null && (expr.symbol_reference is LocalVariable || expr.symbol_reference is Parameter || expr.symbol_reference is Field)) {
+			TargetValue inner = null;
+			var ma = expr as MemberAccess;
+			if (ma != null && ma.inner != null) {
+				inner = ma.inner.target_value;
+			}
+			return get_unref_expression_ (expr.symbol_reference, inner);
 		}
 		var value = new GLibValue (type, cvar);
 		if (expr != null && expr.target_value != null) {
diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala
index 0d75652..7cfd3ed 100644
--- a/codegen/valaccodememberaccessmodule.vala
+++ b/codegen/valaccodememberaccessmodule.vala
@@ -677,6 +677,8 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
 			return get_local_cvalue ((LocalVariable) sym, not_in_coroutine);
 		} else if (sym is Parameter) {
 			return get_parameter_cvalue ((Parameter) sym, not_in_coroutine);
+		} else if (sym is Field) {
+			return get_field_cvalue ((Field) sym, inner);
 		} else {
 			assert_not_reached ();
 		}



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