]> granicus.if.org Git - php/commitdiff
Some functions may want to accept only Unicode or binary strings,
authorAndrei Zmievski <andrei@php.net>
Mon, 27 Mar 2006 02:52:06 +0000 (02:52 +0000)
committerAndrei Zmievski <andrei@php.net>
Mon, 27 Mar 2006 02:52:06 +0000 (02:52 +0000)
without having auto-conversion from the other string type. Add 'U' and
'S' specifiers for this. Also, remove traces of 'native' strings.

Zend/zend_API.c

index 810272bdabc23c21bb23efdbef11b6f17b1154ee..8b2889d6b4d0a08a63fd5365f221fb7ac06be08f 100644 (file)
@@ -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;