Surface: Initialize variable and add a defensive check
Initialize buf variable and make sure to check for return
value of dequeueBuffer() before sending to the client.
Change-Id: I0569f2d45825fab0e5d0f38fc91a07990f57c7ab
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
index 0e2baa2..295f3f9 100644
--- a/libs/gui/Surface.cpp
+++ b/libs/gui/Surface.cpp
@@ -126,9 +126,12 @@
int Surface::hook_dequeueBuffer_DEPRECATED(ANativeWindow* window,
ANativeWindowBuffer** buffer) {
Surface* c = getSelf(window);
- ANativeWindowBuffer* buf;
+ ANativeWindowBuffer* buf = NULL;
int fenceFd = -1;
int result = c->dequeueBuffer(&buf, &fenceFd);
+
+ if (result != NO_ERROR) return result;
+
sp<Fence> fence(new Fence(fenceFd));
int waitResult = fence->waitForever("dequeueBuffer_DEPRECATED");
if (waitResult != OK) {