ABuffer: reset members when memory allocation fails.

Bug: 22077698
Change-Id: I2beb724662d041ad2339d0f4c7f983e7ac5e5e6f
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 @@
 
 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 @@
 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;
 }