diff options
author | Jeff Brown <jeffbrown@google.com> | 2012-03-19 11:50:54 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-03-19 11:50:54 -0700 |
commit | cc67069aa7ea6d6b3a573b5917f43246d228290d (patch) | |
tree | 0e9841f6f1fff286e7f49d922c412156344f6d6a /tools/aapt/StringPool.cpp | |
parent | 21cc2c15b125a13607e320869e012605bac4692f (diff) | |
parent | 46fc395386f2277a0425b2c46be08fd91f6554f4 (diff) |
Merge "Fix build break on glibc hosts."
Diffstat (limited to 'tools/aapt/StringPool.cpp')
-rw-r--r-- | tools/aapt/StringPool.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/tools/aapt/StringPool.cpp b/tools/aapt/StringPool.cpp index b6295bd0e3a7..a9941b46ae11 100644 --- a/tools/aapt/StringPool.cpp +++ b/tools/aapt/StringPool.cpp @@ -213,7 +213,11 @@ status_t StringPool::addStyleSpan(size_t idx, const entry_style_span& span) return NO_ERROR; } +#ifdef __GLIBC__ +int StringPool::config_sort(const void* lhs, const void* rhs, void* state) +#else int StringPool::config_sort(void* state, const void* lhs, const void* rhs) +#endif { StringPool* pool = (StringPool*)state; const entry& lhe = pool->mEntries[pool->mEntryArray[*static_cast<const size_t*>(lhs)]]; @@ -241,7 +245,13 @@ void StringPool::sortByConfig() NOISY(printf("SORTING STRINGS BY CONFIGURATION...\n")); // Vector::sort uses insertion sort, which is very slow for this data set. // Use quicksort instead because we don't need a stable sort here. + // For more fun, GLibC took qsort_r from BSD but then decided to swap the + // order the last two parameters. +#ifdef __GLIBC__ + qsort_r(newPosToOriginalPos.editArray(), N, sizeof(size_t), config_sort, this); +#else qsort_r(newPosToOriginalPos.editArray(), N, sizeof(size_t), this, config_sort); +#endif //newPosToOriginalPos.sort(config_sort, this); NOISY(printf("DONE SORTING STRINGS BY CONFIGURATION.\n")); |