AudioTrack: fix ClientProxy::obtainBuffer() size clamping
Fix data cast in comparison that can cause large unsigned values to
be considered small negative values, causing a wrong buffer size
calculation.
Change-Id: I3b7d4326659c38e744338b5d1ae456c859c89abf
diff --git a/media/libmedia/AudioTrackShared.cpp b/media/libmedia/AudioTrackShared.cpp
index 2742db0..d75ad87 100644
--- a/media/libmedia/AudioTrackShared.cpp
+++ b/media/libmedia/AudioTrackShared.cpp
@@ -179,7 +179,7 @@
avail = 0;
} else if (avail > 0) {
// 'avail' may be non-contiguous, so return only the first contiguous chunk
- ssize_t part1;
+ size_t part1;
if (mIsOut) {
rear &= mFrameCountP2 - 1;
part1 = mFrameCountP2 - rear;
@@ -187,13 +187,13 @@
front &= mFrameCountP2 - 1;
part1 = mFrameCountP2 - front;
}
- if (part1 > avail) {
+ if (part1 > (size_t)avail) {
part1 = avail;
}
- if (part1 > (ssize_t) buffer->mFrameCount) {
+ if (part1 > buffer->mFrameCount) {
part1 = buffer->mFrameCount;
}
- buffer->mFrameCount = (size_t) part1;
+ buffer->mFrameCount = part1;
buffer->mRaw = part1 > 0 ?
&((char *) mBuffers)[(mIsOut ? rear : front) * mFrameSize] : NULL;
buffer->mNonContig = avail - part1;