From 4d3e31cf6c97c076e1977858fa5f40a7ad204e51 Mon Sep 17 00:00:00 2001 From: Arkshine Date: Tue, 4 Aug 2015 17:03:26 +0200 Subject: [PATCH] Fix an SortADTArray() issue where strings are not properly sorted --- amxmodx/sorting.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/amxmodx/sorting.cpp b/amxmodx/sorting.cpp index a892e2e1..a880b6cf 100644 --- a/amxmodx/sorting.cpp +++ b/amxmodx/sorting.cpp @@ -402,14 +402,27 @@ enum SortType Sort_String, }; +int strcellcmp(cell *s1, cell *s2) +{ + for (; *s1 == *s2; s1++, s2++) + { + if (*s1 == '\0') + { + return 0; + } + } + + return (*(byte *)s1 < *(byte *)s2) ? -1 : +1; +} + int sort_adtarray_strings_asc(const void *str1, const void *str2) { - return strcmp((char *) str1, (char *) str2); + return strcellcmp((cell *)str1, (cell *)str2); } int sort_adtarray_strings_desc(const void *str1, const void *str2) { - return strcmp((char *) str2, (char *) str1); + return strcellcmp((cell *)str2, (cell *)str1); } void sort_adt_random(CellArray *cArray)