[vala] codegen: Return a default value in delegate wrappers



commit 9850121b6c3fe8c3a0fce3bc121c05483c5a1739
Author: Luca Bruno <lucabru src gnome org>
Date:   Tue Feb 24 13:47:12 2015 +0100

    codegen: Return a default value in delegate wrappers
    
    Fixes bug 744639

 codegen/valaccodedelegatemodule.vala |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)
---
diff --git a/codegen/valaccodedelegatemodule.vala b/codegen/valaccodedelegatemodule.vala
index 744f63a..9eb57ed 100644
--- a/codegen/valaccodedelegatemodule.vala
+++ b/codegen/valaccodedelegatemodule.vala
@@ -408,8 +408,13 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule {
                        ccall.add_argument (new CCodeConstant ("NULL"));
                        ccall.add_argument (new CCodeConstant ("NULL"));
                }
+
                if (m.return_type is VoidType || m.return_type.is_real_non_null_struct_type ()) {
                        ccode.add_expression (ccall);
+                       if (!(d.return_type is VoidType || d.return_type.is_real_non_null_struct_type ())) {
+                               // return a default value
+                               ccode.add_declaration (return_type_cname, new CCodeVariableDeclarator 
("result", default_value_for_type (d.return_type, true)));
+                       }
                } else {
                        CCodeExpression result = ccall;
                        if (d.return_type is GenericType) {
@@ -435,7 +440,8 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule {
                        }
                }
 
-               if (!(m.return_type is VoidType || m.return_type.is_real_non_null_struct_type ())) {
+               if (!(m.return_type is VoidType || m.return_type.is_real_non_null_struct_type ()) ||
+                       !(d.return_type is VoidType || d.return_type.is_real_non_null_struct_type ())) {
                        ccode.add_return (new CCodeIdentifier ("result"));
                }
 


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