OSDN Git Service

libui: fix passing Fence object over binder
authorColin Cross <ccross@android.com>
Tue, 15 Apr 2014 01:43:12 +0000 (18:43 -0700)
committerColin Cross <ccross@android.com>
Tue, 15 Apr 2014 02:06:47 +0000 (19:06 -0700)
The Fence object was writing a size_t into the binder buffer
in flatten, which changes size if the producer and consumer
are running in a 32-bit and a 64-bit process.  Use a uint32_t
instead.

Change-Id: Ifed526513800ce27f9d605101cddd922292cca37

libs/ui/Fence.cpp

index 93ec0ce..3c0306c 100644 (file)
@@ -138,7 +138,7 @@ status_t Fence::flatten(void*& buffer, size_t& size, int*& fds, size_t& count) c
     if (size < getFlattenedSize() || count < getFdCount()) {
         return NO_MEMORY;
     }
-    FlattenableUtils::write(buffer, size, getFdCount());
+    FlattenableUtils::write(buffer, size, (uint32_t)getFdCount());
     if (isValid()) {
         *fds++ = mFenceFd;
         count--;
@@ -156,7 +156,7 @@ status_t Fence::unflatten(void const*& buffer, size_t& size, int const*& fds, si
         return NO_MEMORY;
     }
 
-    size_t numFds;
+    uint32_t numFds;
     FlattenableUtils::read(buffer, size, numFds);
 
     if (numFds > 1) {