[vala/0.48] codegen: Don't leak memory moving heap-allocated struct to stack



commit 38a3b7153c104d6fb6309a7debba64e6f0f4ec63
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Wed Feb 3 23:16:41 2021 +0100

    codegen: Don't leak memory moving heap-allocated struct to stack
    
    Found by -fsanitize=address

 codegen/valaccodebasemodule.vala | 5 +++++
 1 file changed, 5 insertions(+)
---
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index 96ea9f034..aa6dfb253 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -5370,6 +5370,11 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                var innercexpr = get_cvalue (expr.inner);
                if (expr.type_reference is ValueType && !expr.type_reference.nullable &&
                        expr.inner.value_type is ValueType && expr.inner.value_type.nullable) {
+                       if (!(expr.inner.symbol_reference is Variable)) {
+                               // heap allocated struct leaked, destroy it
+                               var value = new GLibValue (new PointerType (new VoidType ()), innercexpr);
+                               temp_ref_values.insert (0, value);
+                       }
                        // nullable integer or float or boolean or struct or enum cast to non-nullable
                        innercexpr = new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, 
innercexpr);
                } else if (expr.type_reference is ValueType && expr.type_reference.nullable &&


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