Bug 1319271 - Return early in Send__delete__ method when Send fails. r=billm

MozReview-Commit-ID: GOVSpzT3JlX
This commit is contained in:
Kan-Ru Chen 2016-11-24 14:31:02 +08:00
Родитель bc2ee20052
Коммит f58e35a5a9
1 изменённых файлов: 9 добавлений и 2 удалений

Просмотреть файл

@ -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