diff options
author | Jürg Billeter <j@bitron.ch> | 2009-09-30 19:28:37 +0200 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2009-09-30 19:32:59 +0200 |
commit | fe541bc5cd9d84a567705b72777c2b2117c85aef (patch) | |
tree | fa3c4ce77ce70333d8261c93627ccd33808d4920 /codegen/valagerrormodule.vala | |
parent | d04921e03d985ce73468189b7d2f57dd184d8ce8 (diff) | |
download | vala-fe541bc5cd9d84a567705b72777c2b2117c85aef.tar.gz |
GError: Fix error propagation in creation methods
Diffstat (limited to 'codegen/valagerrormodule.vala')
-rw-r--r-- | codegen/valagerrormodule.vala | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/codegen/valagerrormodule.vala b/codegen/valagerrormodule.vala index 9d624ded9..2f1d3856f 100644 --- a/codegen/valagerrormodule.vala +++ b/codegen/valagerrormodule.vala @@ -116,7 +116,11 @@ internal class Vala.GErrorModule : CCodeDelegateModule { append_local_free (current_symbol, free_frag, false); cerror_block.add_statement (free_frag); - if (current_return_type is VoidType) { + if (current_method is CreationMethod) { + cerror_block.add_statement (new CCodeReturnStatement (new CCodeConstant ("NULL"))); + } else if (current_method != null && current_method.coroutine) { + cerror_block.add_statement (new CCodeReturnStatement (new CCodeConstant ("FALSE"))); + } else if (current_return_type is VoidType) { cerror_block.add_statement (new CCodeReturnStatement ()); } else { cerror_block.add_statement (new CCodeReturnStatement (default_value_for_type (current_return_type, false))); |