]> git.saurik.com Git - android/aapt.git/commitdiff
Use qsort_r_compat() as a portable wrapper for qsort_r().
authorJeff Brown <jeffbrown@google.com>
Mon, 19 Mar 2012 21:08:58 +0000 (14:08 -0700)
committerJeff Brown <jeffbrown@google.com>
Mon, 19 Mar 2012 21:08:58 +0000 (14:08 -0700)
Change-Id: Ie79f81625947f4e95122047605d994c86e872e74

StringPool.cpp
StringPool.h

index a9941b46ae11e19d2c64efe42d97789d502c8bf0..839eda5151b03bc602e612464842a72a8e0b51cc 100644 (file)
@@ -9,6 +9,7 @@
 
 #include <utils/ByteOrder.h>
 #include <utils/SortedVector.h>
+#include <cutils/qsort_r_compat.h>
 
 #if HAVE_PRINTF_ZD
 #  define ZD "%zd"
@@ -213,11 +214,7 @@ 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)]];
@@ -245,13 +242,7 @@ 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
+    qsort_r_compat(newPosToOriginalPos.editArray(), N, sizeof(size_t), this, config_sort);
     //newPosToOriginalPos.sort(config_sort, this);
     NOISY(printf("DONE SORTING STRINGS BY CONFIGURATION.\n"));
 
index 64acfd8131629fba2bcfeda9f0c9b19ee070f2a2..d5010086b2928a55adad08884c6d98ddbdd29e48 100644 (file)
@@ -139,11 +139,7 @@ public:
     const Vector<size_t>* offsetsForString(const String16& val) const;
 
 private:
-#ifdef __GLIBC__
-    static int config_sort(const void* lhs, const void* rhs, void* state);
-#else
     static int config_sort(void* state, const void* lhs, const void* rhs);
-#endif
 
     const bool                              mUTF8;