cvs: php-src /ext/curl interface.c
| From: | Ilia Alshanetsky | Date: | Sat, 09 Dec 2006 14:37:40 +0000 |
| Subject: | cvs: php-src /ext/curl interface.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-42019@lists.php.net to get a copy of this message | ||
iliaa Sat Dec 9 14:37:40 2006 UTC
Modified files:
/php-src/ext/curl interface.c
Log:
Improve handling of POST data with Andrei's help.
http://cvs.php.net/viewvc.cgi/php-src/ext/curl/interface.c?r1=1.102&r2=1.103&diff_format=u
Index: php-src/ext/curl/interface.c
diff -u php-src/ext/curl/interface.c:1.102 php-src/ext/curl/interface.c:1.103
--- php-src/ext/curl/interface.c:1.102 Sat Dec 9 14:07:13 2006
+++ php-src/ext/curl/interface.c Sat Dec 9 14:37:40 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: interface.c,v 1.102 2006/12/09 14:07:13 bjori Exp $ */
+/* $Id: interface.c,v 1.103 2006/12/09 14:37:40 iliaa Exp $ */
#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
@@ -1451,22 +1451,36 @@
UErrorCode status = U_ZERO_ERROR;
uint data_len;
- SEPARATE_ZVAL(current);
-
- if (Z_TYPE_PP(current) == IS_UNICODE) {
- zend_unicode_to_string_ex(UG(utf8_conv), &postval, &data_len, Z_USTRVAL_PP(current),
Z_USTRLEN_PP(current), &status);
- } else {
- convert_to_string_ex(current);
- postval = Z_STRVAL_PP(current);
- data_len = Z_STRLEN_PP(current);
+ switch (Z_TYPE_PP(current)) {
+ case IS_UNICODE:
+ ntype = HASH_KEY_IS_UNICODE;
+ break;
+ case IS_STRING:
+ ntype = HASH_KEY_IS_STRING;
+ break;
+ default:
+ if (type != -1) {
+ ntype = type;
+ } else {
+ ntype = HASH_KEY_IS_STRING;
+ }
+ break;
}
- zend_hash_get_current_key_ex(postfields, &string_key, &string_key_len, &num_key,
0, NULL);
-
- ntype = zend_hash_get_current_key_ex(postfields, &string_key, &string_key_len,
&num_key, 0, NULL);
if (type == -1) {
type = ntype;
} else if (type != ntype) {
+ goto type_conflict;
+ }
+
+ SEPARATE_ZVAL(current);
+ convert_to_string_with_converter_ex(current, UG(utf8_conv));
+ postval = Z_STRVAL_PP(current);
+ data_len = Z_STRLEN_PP(current);
+
+ ntype = zend_hash_get_current_key_ex(postfields, &string_key, &string_key_len,
&num_key, 0, NULL);
+ if (type != ntype && ntype != HASH_KEY_IS_LONG) {
+type_conflict:
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Form parameters must either be all unicode
or all binary");
continue;
}