OSDN Git Service

Graphics:Add error check when create GraphicBuffer
authorLingyun Zhu <lingyun.zhu@intel.com>
Tue, 20 Nov 2012 11:24:35 +0000 (19:24 +0800)
committerJesse Hall <jessehall@google.com>
Tue, 13 Aug 2013 18:51:48 +0000 (11:51 -0700)
Change-Id: Ib0ca59bf1dfe4ae0266c29c91c1dbe3d02c0904e
Author: Lingyun Zhu <lingyun.zhu@intel.com>
Signed-off-by: Lingyun Zhu <lingyun.zhu@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 50141

libs/gui/IGraphicBufferProducer.cpp
libs/ui/GraphicBuffer.cpp

index 63d7628..c335439 100644 (file)
@@ -62,7 +62,11 @@ public:
         bool nonNull = reply.readInt32();
         if (nonNull) {
             *buf = new GraphicBuffer();
-            reply.read(**buf);
+            result = reply.read(**buf);
+            if(result != NO_ERROR) {
+                (*buf).clear();
+                return result;
+            }
         }
         result = reply.readInt32();
         return result;
index 580788d..83ae469 100644 (file)
@@ -281,6 +281,8 @@ status_t GraphicBuffer::unflatten(void const* buffer, size_t size,
     if (handle != 0) {
         status_t err = mBufferMapper.registerBuffer(handle);
         if (err != NO_ERROR) {
+            width = height = stride = format = usage = 0;
+            handle = NULL;
             ALOGE("unflatten: registerBuffer failed: %s (%d)",
                     strerror(-err), err);
             return err;