From bb02e3288ea08f3e55fc7b5ea824264188a3c136 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 27 Oct 2011 17:01:31 -0700 Subject: [PATCH] AAPT fix printf %zd crash on Windows. There's no printf %zd on Mingw/Cygwin so the verbose printf crashes aapt. SDK bugs: 20395, 20986 Change-Id: I5b8ac36749263205a19f1448b1aaca90d5a2e06d --- Resource.cpp | 16 ++++++++++++---- StringPool.cpp | 10 +++++++++- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/Resource.cpp b/Resource.cpp index 887fa74..1ecf7da 100644 --- a/Resource.cpp +++ b/Resource.cpp @@ -14,6 +14,14 @@ #include "FileFinder.h" #include "CacheUpdater.h" +#if HAVE_PRINTF_ZD +# define ZD "%zd" +# define ZD_TYPE ssize_t +#else +# define ZD "%ld" +# define ZD_TYPE long +#endif + #define NOISY(x) // x // ========================================================================== @@ -566,11 +574,11 @@ static bool applyFileOverlay(Bundle *bundle, DefaultKeyedVector > baseFiles = baseGroup->getFiles(); for (size_t i=0; i < baseFiles.size(); i++) { - printf("baseFile %zd has flavor %s\n", i, + printf("baseFile " ZD " has flavor %s\n", (ZD_TYPE) i, baseFiles.keyAt(i).toString().string()); } for (size_t i=0; i < overlayFiles.size(); i++) { - printf("overlayFile %zd has flavor %s\n", i, + printf("overlayFile " ZD " has flavor %s\n", (ZD_TYPE) i, overlayFiles.keyAt(i).toString().string()); } } @@ -584,8 +592,8 @@ static bool applyFileOverlay(Bundle *bundle, keyAt(overlayGroupIndex)); if (baseFileIndex < UNKNOWN_ERROR) { if (bundle->getVerbose()) { - printf("found a match (%zd) for overlay file %s, for flavor %s\n", - baseFileIndex, + printf("found a match (" ZD ") for overlay file %s, for flavor %s\n", + (ZD_TYPE) baseFileIndex, overlayGroup->getLeaf().string(), overlayFiles.keyAt(overlayGroupIndex).toString().string()); } diff --git a/StringPool.cpp b/StringPool.cpp index d067d59..9a0a1c4 100644 --- a/StringPool.cpp +++ b/StringPool.cpp @@ -8,6 +8,14 @@ #include +#if HAVE_PRINTF_ZD +# define ZD "%zd" +# define ZD_TYPE ssize_t +#else +# define ZD "%ld" +# define ZD_TYPE long +#endif + #define NOISY(x) //x void strcpy16_htod(uint16_t* dst, const uint16_t* src) @@ -30,7 +38,7 @@ void printStringPool(const ResStringPool* pool) str = String8(pool->stringAt(s, &len)).string(); } - printf("String #%zd: %s\n", s, str); + printf("String #" ZD ": %s\n", (ZD_TYPE) s, str); } } -- 2.45.2