summaryrefslogtreecommitdiff
path: root/codegen/valagerrormodule.vala
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2009-09-30 19:28:37 +0200
committerJürg Billeter <j@bitron.ch>2009-09-30 19:32:59 +0200
commitfe541bc5cd9d84a567705b72777c2b2117c85aef (patch)
treefa3c4ce77ce70333d8261c93627ccd33808d4920 /codegen/valagerrormodule.vala
parentd04921e03d985ce73468189b7d2f57dd184d8ce8 (diff)
downloadvala-fe541bc5cd9d84a567705b72777c2b2117c85aef.tar.gz
GError: Fix error propagation in creation methods
Diffstat (limited to 'codegen/valagerrormodule.vala')
-rw-r--r--codegen/valagerrormodule.vala6
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)));