From 4d481acb3acb39e3b202650ef1ac5130e66b46b4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrg=20Billeter?= Date: Thu, 17 Sep 2009 11:22:23 +0200 Subject: [PATCH] GAsync: Fix calling async methods from async methods without yield --- codegen/valaccodemethodcallmodule.vala | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/codegen/valaccodemethodcallmodule.vala b/codegen/valaccodemethodcallmodule.vala index 8160fdb37..223515242 100644 --- a/codegen/valaccodemethodcallmodule.vala +++ b/codegen/valaccodemethodcallmodule.vala @@ -642,18 +642,16 @@ internal class Vala.CCodeMethodCallModule : CCodeAssignmentModule { expr.ccodenode = ccall_expr; } - if (m != null && m.coroutine && current_method != null && current_method.coroutine) { - if (ma.member_name != "begin" || ma.inner.symbol_reference != ma.symbol_reference) { - if (pre_statement_fragment == null) { - pre_statement_fragment = new CCodeFragment (); - } - pre_statement_fragment.append (new CCodeExpressionStatement (async_call)); - - int state = next_coroutine_state++; - pre_statement_fragment.append (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("data"), "_state_"), new CCodeConstant (state.to_string ())))); - pre_statement_fragment.append (new CCodeReturnStatement (new CCodeConstant ("FALSE"))); - pre_statement_fragment.append (new CCodeCaseStatement (new CCodeConstant (state.to_string ()))); + if (expr.is_yield_expression) { + if (pre_statement_fragment == null) { + pre_statement_fragment = new CCodeFragment (); } + pre_statement_fragment.append (new CCodeExpressionStatement (async_call)); + + int state = next_coroutine_state++; + pre_statement_fragment.append (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("data"), "_state_"), new CCodeConstant (state.to_string ())))); + pre_statement_fragment.append (new CCodeReturnStatement (new CCodeConstant ("FALSE"))); + pre_statement_fragment.append (new CCodeCaseStatement (new CCodeConstant (state.to_string ()))); } if (m is ArrayResizeMethod) { -- 2.47.3