зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1319271 - Return early in Send__delete__ method when Send fails. r=billm
MozReview-Commit-ID: GOVSpzT3JlX
This commit is contained in:
Родитель
bc2ee20052
Коммит
f58e35a5a9
|
@ -4151,12 +4151,15 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor):
|
||||||
|
|
||||||
msgvar, stmts = self.makeMessage(md, errfnSendDtor, actorvar)
|
msgvar, stmts = self.makeMessage(md, errfnSendDtor, actorvar)
|
||||||
sendok, sendstmts = self.sendAsync(md, msgvar, actorvar)
|
sendok, sendstmts = self.sendAsync(md, msgvar, actorvar)
|
||||||
|
failif = StmtIf(ExprNot(sendok))
|
||||||
|
failif.addifstmt(StmtReturn.FALSE)
|
||||||
|
|
||||||
method.addstmts(
|
method.addstmts(
|
||||||
stmts
|
stmts
|
||||||
+ self.genVerifyMessage(md.decl.type.verify, md.params,
|
+ self.genVerifyMessage(md.decl.type.verify, md.params,
|
||||||
errfnSendDtor, ExprVar('msg__'))
|
errfnSendDtor, ExprVar('msg__'))
|
||||||
+ sendstmts
|
+ sendstmts
|
||||||
+ [ Whitespace.NL ]
|
+ [ failif, Whitespace.NL ]
|
||||||
+ self.dtorEpilogue(md, actor.var())
|
+ self.dtorEpilogue(md, actor.var())
|
||||||
+ [ StmtReturn(sendok) ])
|
+ [ StmtReturn(sendok) ])
|
||||||
|
|
||||||
|
@ -4180,6 +4183,9 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor):
|
||||||
|
|
||||||
replyvar = self.replyvar
|
replyvar = self.replyvar
|
||||||
sendok, sendstmts = self.sendBlocking(md, msgvar, replyvar, actorvar)
|
sendok, sendstmts = self.sendBlocking(md, msgvar, replyvar, actorvar)
|
||||||
|
failif = StmtIf(ExprNot(sendok))
|
||||||
|
failif.addifstmt(StmtReturn.FALSE)
|
||||||
|
|
||||||
method.addstmts(
|
method.addstmts(
|
||||||
stmts
|
stmts
|
||||||
+ self.genVerifyMessage(md.decl.type.verify, md.params,
|
+ 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.transition(md, 'in', actor.var(), reply=True))
|
||||||
|
|
||||||
method.addstmts(
|
method.addstmts(
|
||||||
self.dtorEpilogue(md, actor.var())
|
[ failif, Whitespace.NL ]
|
||||||
|
+ self.dtorEpilogue(md, actor.var())
|
||||||
+ [ Whitespace.NL, StmtReturn(sendok) ])
|
+ [ Whitespace.NL, StmtReturn(sendok) ])
|
||||||
|
|
||||||
return method
|
return method
|
||||||
|
|
Загрузка…
Ссылка в новой задаче