diff --git a/ipc/ipdl/ipdl/lower.py b/ipc/ipdl/ipdl/lower.py index cc62c904b7fa..db051b80dec8 100644 --- a/ipc/ipdl/ipdl/lower.py +++ b/ipc/ipdl/ipdl/lower.py @@ -4151,12 +4151,15 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor): msgvar, stmts = self.makeMessage(md, errfnSendDtor, actorvar) sendok, sendstmts = self.sendAsync(md, msgvar, actorvar) + failif = StmtIf(ExprNot(sendok)) + failif.addifstmt(StmtReturn.FALSE) + method.addstmts( stmts + self.genVerifyMessage(md.decl.type.verify, md.params, errfnSendDtor, ExprVar('msg__')) + sendstmts - + [ Whitespace.NL ] + + [ failif, Whitespace.NL ] + self.dtorEpilogue(md, actor.var()) + [ StmtReturn(sendok) ]) @@ -4180,6 +4183,9 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor): replyvar = self.replyvar sendok, sendstmts = self.sendBlocking(md, msgvar, replyvar, actorvar) + failif = StmtIf(ExprNot(sendok)) + failif.addifstmt(StmtReturn.FALSE) + method.addstmts( stmts + self.genVerifyMessage(md.decl.type.verify, md.params, @@ -4201,7 +4207,8 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor): method.addstmts(self.transition(md, 'in', actor.var(), reply=True)) method.addstmts( - self.dtorEpilogue(md, actor.var()) + [ failif, Whitespace.NL ] + + self.dtorEpilogue(md, actor.var()) + [ Whitespace.NL, StmtReturn(sendok) ]) return method