]> granicus.if.org Git - php/commitdiff
- #48779, don't loop twice over the path chars
authorPierre Joye <pajoye@php.net>
Sun, 11 Oct 2009 20:50:53 +0000 (20:50 +0000)
committerPierre Joye <pajoye@php.net>
Sun, 11 Oct 2009 20:50:53 +0000 (20:50 +0000)
main/php_ini.c

index 83a1b801d410551c0b8737de5befeaa98ab4fc9f..7f951a0681c7a60a5c061be36a438f7d8ff7d95a 100644 (file)
 #endif
 
 #ifdef PHP_WIN32
-#define TRANSLATE_SLASHES(path) \
+#define TRANSLATE_SLASHES_LOWER(path) \
        { \
                char *tmp = path; \
                while (*tmp) { \
                        if (*tmp == '\\') *tmp = '/'; \
-                       tmp++; \
+                       else *tmp = (__isascii(*tmp)) ? _tolower(*tmp) : tolower(*tmp); \
+                               tmp++; \
                } \
        }
 #else
-#define TRANSLATE_SLASHES(path)
+#define TRANSLATE_SLASHES_LOWER(path)
 #endif
 
 
@@ -287,12 +288,9 @@ static void php_ini_parser_cb(zval *arg1, zval *arg2, zval *arg3, int callback_t
                                        key_len = Z_STRLEN_P(arg1) - sizeof("PATH") + 1;
                                        is_special_section = 1;
                                        has_per_dir_config = 1;
-#ifdef PHP_WIN32
-                                       /* make the path lowercase on Windows, for case insensitivty. */
-                                       strlwr(key);
 
-                                       TRANSLATE_SLASHES(key);
-#endif
+                                       /* make the path lowercase on Windows, for case insensitivty. Does nothign for other platforms */
+                                       TRANSLATE_SLASHES_LOWER(key);
 
                                /* HOST sections */
                                } else if (!strncasecmp(Z_STRVAL_P(arg1), "HOST", sizeof("HOST") - 1)) {