From: Andrei Zmievski Date: Mon, 27 Mar 2006 02:52:06 +0000 (+0000) Subject: Some functions may want to accept only Unicode or binary strings, X-Git-Tag: RELEASE_1_3~249 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=29552a64728830f31336dcdb27cabb5f3369d704;p=php Some functions may want to accept only Unicode or binary strings, without having auto-conversion from the other string type. Add 'U' and 'S' specifiers for this. Also, remove traces of 'native' strings. --- diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 810272bdab..8b2889d6b4 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -208,7 +208,7 @@ ZEND_API char *zend_zval_type_name(zval *arg) return "double"; case IS_STRING: - return "native string"; + return "binary string"; case IS_ARRAY: return "array"; @@ -375,6 +375,7 @@ static char *zend_parse_arg_impl(int arg_num, zval **arg, va_list *va, char **sp break; case 's': + case 'S': { char **p = va_arg(*va, char **); int *pl = va_arg(*va, int *); @@ -387,11 +388,15 @@ static char *zend_parse_arg_impl(int arg_num, zval **arg, va_list *va, char **sp } /* break omitted intentionally */ + case IS_UNICODE: + if (c == 'S') { + return "definitely a binary string"; + } + /* fall through */ case IS_STRING: case IS_LONG: case IS_DOUBLE: case IS_BOOL: - case IS_UNICODE: convert_to_string_ex(arg); *p = Z_STRVAL_PP(arg); *pl = Z_STRLEN_PP(arg); @@ -405,7 +410,7 @@ static char *zend_parse_arg_impl(int arg_num, zval **arg, va_list *va, char **sp *p = Z_STRVAL_PP(arg); break; } else { - return "native string"; + return "binary string"; } } } @@ -413,12 +418,13 @@ static char *zend_parse_arg_impl(int arg_num, zval **arg, va_list *va, char **sp case IS_ARRAY: case IS_RESOURCE: default: - return "native string"; + return "binary string"; } } break; case 'u': + case 'U': { UChar **p = va_arg(*va, UChar **); int *pl = va_arg(*va, int *); @@ -432,6 +438,10 @@ static char *zend_parse_arg_impl(int arg_num, zval **arg, va_list *va, char **sp /* break omitted intentionally */ case IS_STRING: + if (c == 'U') { + return "definitely a Unicode string"; + } + /* fall through */ case IS_LONG: case IS_DOUBLE: case IS_BOOL: @@ -517,7 +527,7 @@ static char *zend_parse_arg_impl(int arg_num, zval **arg, va_list *va, char **sp case IS_ARRAY: case IS_RESOURCE: default: - return "string (native, Unicode, or binary)"; + return "string (Unicode or binary)"; } break; @@ -579,7 +589,7 @@ static char *zend_parse_arg_impl(int arg_num, zval **arg, va_list *va, char **sp case IS_ARRAY: case IS_RESOURCE: default: - return "string (native, Unicode, or binary)"; + return "string (Unicode or binary)"; } } break; @@ -795,7 +805,8 @@ static int zend_parse_va_args(int num_args, char *type_spec, va_list *va, int fl case 'z': case 'Z': case 't': case 'y': case 'u': case 'C': - case 'h': + case 'h': case 'U': + case 'S': max_num_args++; break;