diff options
Diffstat (limited to 'tools/aapt/Images.cpp')
-rw-r--r-- | tools/aapt/Images.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/tools/aapt/Images.cpp b/tools/aapt/Images.cpp index 4a766d157740..9d5937c7d6f0 100644 --- a/tools/aapt/Images.cpp +++ b/tools/aapt/Images.cpp @@ -562,10 +562,16 @@ getout: static void checkNinePatchSerialization(Res_png_9patch* inPatch, void * data) { + if (sizeof(void*) != sizeof(int32_t)) { + // can't deserialize on a non-32 bit system + return; + } size_t patchSize = inPatch->serializedSize(); void * newData = malloc(patchSize); memcpy(newData, data, patchSize); Res_png_9patch* outPatch = inPatch->deserialize(newData); + // deserialization is done in place, so outPatch == newData + assert(outPatch == newData); assert(outPatch->numXDivs == inPatch->numXDivs); assert(outPatch->numYDivs == inPatch->numYDivs); assert(outPatch->paddingLeft == inPatch->paddingLeft); @@ -581,6 +587,7 @@ static void checkNinePatchSerialization(Res_png_9patch* inPatch, void * data) for (int i = 0; i < outPatch->numColors; i++) { assert(outPatch->colors[i] == inPatch->colors[i]); } + free(newData); } static bool patch_equals(Res_png_9patch& patch1, Res_png_9patch& patch2) { |