From f585c6ce18dbf9aad8d5c5af208e5e7bf92c6c29 Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Mon, 24 Jun 2002 08:24:21 +0000 Subject: [PATCH] - MFH --- ext/standard/string.c | 19 +++++++++++++------ ext/standard/versioning.c | 25 +++++++++++++++++-------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/ext/standard/string.c b/ext/standard/string.c index d33e77bf33..c6d9844ca3 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -1811,7 +1811,7 @@ PHP_FUNCTION(ucfirst) convert_to_string_ex(str); if (!Z_STRLEN_PP(str)) { - RETURN_FALSE; + RETURN_EMPTY_STRING(); } ZVAL_STRINGL(return_value, Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1); @@ -1832,7 +1832,7 @@ PHP_FUNCTION(ucwords) convert_to_string_ex(str); if (!Z_STRLEN_PP(str)) { - RETURN_FALSE; + RETURN_EMPTY_STRING(); } ZVAL_STRINGL(return_value, Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1); @@ -2118,7 +2118,6 @@ PHPAPI void php_stripslashes(char *str, int *len TSRMLS_DC) { char *s, *t; int l; - char escape_char='\\'; if (len != NULL) { l = *len; @@ -2137,8 +2136,16 @@ PHPAPI void php_stripslashes(char *str, int *len TSRMLS_DC) (*len)--; l--; } - } - *s++ = *t++; + *s++ = *t++; + } else if (*t=='\\' && l>0 && t[1]=='0') { + *s++='\0'; + t += 2; + if (len != NULL) + (*len)--; + l--; + } else { + *s++ = *t++; + } l--; } *s = '\0'; @@ -2148,7 +2155,7 @@ PHPAPI void php_stripslashes(char *str, int *len TSRMLS_DC) while (l > 0) { - if (*t == escape_char) { + if (*t == '\\') { t++; /* skip the slash */ if (len != NULL) (*len)--; diff --git a/ext/standard/versioning.c b/ext/standard/versioning.c index 06233bfc93..bb601a4f31 100644 --- a/ext/standard/versioning.c +++ b/ext/standard/versioning.c @@ -105,12 +105,21 @@ compare_special_version_forms(const char *form1, const char *form2) PHPAPI int php_version_compare(const char *orig_ver1, const char *orig_ver2) { - char *ver1 = php_canonicalize_version(orig_ver1); - char *ver2 = php_canonicalize_version(orig_ver2); + char *ver1; + char *ver2; char *p1, *p2, *n1, *n2; long l1, l2; int compare = 0; + if (!*orig_ver1 || !*orig_ver2) { + if (!*orig_ver1 && !*orig_ver2) { + return 0; + } else { + return *orig_ver1 ? 1 : -1; + } + } + ver1 = php_canonicalize_version(orig_ver1); + ver2 = php_canonicalize_version(orig_ver2); p1 = n1 = ver1; p2 = n2 = ver2; while (*p1 && *p2 && n1 && n2) { @@ -187,22 +196,22 @@ PHP_FUNCTION(version_compare) if (argc == 2) { RETURN_LONG(compare); } - if (!strcmp(op, "<") || !strcmp(op, "lt")) { + if (!strncmp(op, "<", op_len) || !strncmp(op, "lt", op_len)) { RETURN_BOOL(compare == -1); } - if (!strcmp(op, "<=") || !strcmp(op, "le")) { + if (!strncmp(op, "<=", op_len) || !strncmp(op, "le", op_len)) { RETURN_BOOL(compare != 1); } - if (!strcmp(op, ">") || !strcmp(op, "gt")) { + if (!strncmp(op, ">", op_len) || !strncmp(op, "gt", op_len)) { RETURN_BOOL(compare == 1); } - if (!strcmp(op, ">=") || !strcmp(op, "ge")) { + if (!strncmp(op, ">=", op_len) || !strncmp(op, "ge", op_len)) { RETURN_BOOL(compare != -1); } - if (!strcmp(op, "==") || !strcmp(op, "=") || !strcmp(op, "eq")) { + if (!strncmp(op, "==", op_len) || !strncmp(op, "=", op_len) || !strncmp(op, "eq", op_len)) { RETURN_BOOL(compare == 0); } - if (!strcmp(op, "!=") || !strcmp(op, "<>") || !strcmp(op, "ne")) { + if (!strncmp(op, "!=", op_len) || !strncmp(op, "<>", op_len) || !strncmp(op, "ne", op_len)) { RETURN_BOOL(compare != 0); } RETURN_NULL(); -- 2.50.1