summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/foundation
diff options
context:
space:
mode:
authorWei Jia <wjia@google.com>2015-07-20 11:34:22 -0700
committerWei Jia <wjia@google.com>2015-07-20 11:34:22 -0700
commit94b0badc025b14141ff234e3e4e2745411742bac (patch)
tree3108e3c09f78c3c28dd24e2990baf7673cab215f /media/libstagefright/foundation
parentf8f669d7a727e4ad5505cd85741f4d50dbaffbf9 (diff)
downloadframeworks_av-94b0badc025b14141ff234e3e4e2745411742bac.zip
frameworks_av-94b0badc025b14141ff234e3e4e2745411742bac.tar.gz
frameworks_av-94b0badc025b14141ff234e3e4e2745411742bac.tar.bz2
ABuffer: reset members when memory allocation fails.
Bug: 22077698 Change-Id: I2beb724662d041ad2339d0f4c7f983e7ac5e5e6f
Diffstat (limited to 'media/libstagefright/foundation')
-rw-r--r--media/libstagefright/foundation/ABuffer.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/media/libstagefright/foundation/ABuffer.cpp b/media/libstagefright/foundation/ABuffer.cpp
index b214870..a5b81a8 100644
--- a/media/libstagefright/foundation/ABuffer.cpp
+++ b/media/libstagefright/foundation/ABuffer.cpp
@@ -25,12 +25,17 @@ namespace android {
ABuffer::ABuffer(size_t capacity)
: mMediaBufferBase(NULL),
- mData(malloc(capacity)),
- mCapacity(capacity),
mRangeOffset(0),
- mRangeLength(capacity),
mInt32Data(0),
mOwnsData(true) {
+ mData = malloc(capacity);
+ if (mData == NULL) {
+ mCapacity = 0;
+ mRangeLength = 0;
+ } else {
+ mCapacity = capacity;
+ mRangeLength = capacity;
+ }
}
ABuffer::ABuffer(void *data, size_t capacity)
@@ -47,6 +52,9 @@ ABuffer::ABuffer(void *data, size_t capacity)
sp<ABuffer> ABuffer::CreateAsCopy(const void *data, size_t capacity)
{
sp<ABuffer> res = new ABuffer(capacity);
+ if (res->base() == NULL) {
+ return NULL;
+ }
memcpy(res->data(), data, capacity);
return res;
}