diff options
Diffstat (limited to 'libs/binder/RpcState.cpp')
| -rw-r--r-- | libs/binder/RpcState.cpp | 12 | 
1 files changed, 6 insertions, 6 deletions
| diff --git a/libs/binder/RpcState.cpp b/libs/binder/RpcState.cpp index b5c6cb091c..ef62f20d9a 100644 --- a/libs/binder/RpcState.cpp +++ b/libs/binder/RpcState.cpp @@ -885,12 +885,6 @@ processTransactInternalTailCall:          }      } -    // Binder refs are flushed for oneway calls only after all calls which are -    // built up are executed. Otherwise, they fill up the binder buffer. -    if (addr != 0 && replyStatus == OK && !oneway) { -        replyStatus = flushExcessBinderRefs(session, addr, target); -    } -      if (oneway) {          if (replyStatus != OK) {              ALOGW("Oneway call failed with error: %d", replyStatus); @@ -950,6 +944,12 @@ processTransactInternalTailCall:          return OK;      } +    // Binder refs are flushed for oneway calls only after all calls which are +    // built up are executed. Otherwise, they fill up the binder buffer. +    if (addr != 0 && replyStatus == OK) { +        replyStatus = flushExcessBinderRefs(session, addr, target); +    } +      LOG_ALWAYS_FATAL_IF(std::numeric_limits<int32_t>::max() - sizeof(RpcWireHeader) -                                          sizeof(RpcWireReply) <                                  reply.dataSize(), |