summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jason Sams <rjsams@android.com> 2010-12-05 19:54:18 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2010-12-05 19:54:18 -0800
commitf9adf6b74fe6e30bc55472863ada31cd7477f9cb (patch)
treee44941f49263feb4098ce9cc38ad24d858722db9
parent7e06ea80f781b26e17d630ccbb08237be2541f36 (diff)
parent8ea061bcdd15588603ed4dbd720e493ec1d62a89 (diff)
Merge "Prevent message overrun in LocklessCommandFifo."
-rw-r--r--libs/rs/rsLocklessFifo.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/libs/rs/rsLocklessFifo.cpp b/libs/rs/rsLocklessFifo.cpp
index e87525e438cc..804c76726743 100644
--- a/libs/rs/rsLocklessFifo.cpp
+++ b/libs/rs/rsLocklessFifo.cpp
@@ -166,7 +166,7 @@ bool LocklessCommandFifo::makeSpaceNonBlocking(uint32_t bytes) {
//dumpState("make space non-blocking");
if ((mPut+bytes) > mEnd) {
// Need to loop regardless of where get is.
- if ((mGet > mPut) && (mBuffer+4 >= mGet)) {
+ if ((mGet > mPut) || (mBuffer+4 >= mGet)) {
return false;
}
@@ -189,7 +189,7 @@ void LocklessCommandFifo::makeSpace(uint32_t bytes) {
//dumpState("make space");
if ((mPut+bytes) > mEnd) {
// Need to loop regardless of where get is.
- while ((mGet > mPut) && (mBuffer+4 >= mGet)) {
+ while ((mGet > mPut) || (mBuffer+4 >= mGet)) {
usleep(100);
}
@@ -210,4 +210,3 @@ void LocklessCommandFifo::makeSpace(uint32_t bytes) {
void LocklessCommandFifo::dumpState(const char *s) const {
LOGV("%s %p put %p, get %p, buf %p, end %p", s, this, mPut, mGet, mBuffer, mEnd);
}
-