diff --git a/jerry-libc/jerry-libc.c b/jerry-libc/jerry-libc.c index 4db3063ca..5e973dede 100644 --- a/jerry-libc/jerry-libc.c +++ b/jerry-libc/jerry-libc.c @@ -156,43 +156,23 @@ CALL_PRAGMA (GCC diagnostic pop) /** Compare two strings. return an integer less than, equal to, or greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2. */ int -strcmp (const char *s1, const char *s2) +strcmp (const char *str1, const char *str2) { - size_t i; - if (s1 == NULL) + int s1; + int s2; + do { - if (s2 != NULL) - { - return -1; - } - else - { - return 0; - } - } - if (s2 == NULL) - { - return 1; - } + s1 = *str1++; + s2 = *str2++; - for (i = 0; s1[i]; i++) - { - if (s1[i] > s2[i]) + if (s1 == 0) { - return 1; - } - else if (s1[i] < s2[i]) - { - return -1; + break; } } + while (s1 == s2); - if (s2[i]) - { - return -1; - } - - return 0; + return (s1 < s2) ? -1 : (s1 > s2 ? 1 : 0); } /** Compare two strings. return an integer less than, equal to, or greater than zero