Browse Source

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.
migration/RELEASE_1_0_0
Andrei Zmievski 20 years ago
parent
commit
29552a6472
  1. 25
      Zend/zend_API.c

25
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;

Loading…
Cancel
Save