prepare v4.2.5
[m6w6/ext-http] / src / php_http_url.c
index ad4f14cb87d222c47c227602dd7c418b74d23d10..459396f347d57280858a37c6e55546ff2558d495 100644 (file)
@@ -19,6 +19,7 @@
 #      include <idn2.h>
 #endif
 #if PHP_HTTP_HAVE_LIBICU
+#      include <unicode/uchar.h>
 #      include <unicode/uidna.h>
 #endif
 #if PHP_HTTP_HAVE_LIBIDNKIT || PHP_HTTP_HAVE_LIBIDNKIT2
@@ -72,7 +73,7 @@ static inline char *localhostname(void)
 static php_http_url_t *php_http_url_from_env(void)
 {
        zval *https, *zhost, *zport;
-       long port;
+       zend_long port;
        php_http_buffer_t buf;
 
        php_http_buffer_init_ex(&buf, MAX(PHP_HTTP_BUFFER_DEFAULT_SIZE, sizeof(php_http_url_t)<<2), PHP_HTTP_BUFFER_INIT_PREALLOC);
@@ -534,7 +535,7 @@ HashTable *php_http_url_to_struct(const php_http_url_t *url, zval *strct)
        if (!strct || Z_TYPE_P(strct) == IS_ARRAY) { \
                zend_hash_str_update(ht, part, lenof(part), &tmp); \
        } else { \
-               zend_update_property(Z_OBJCE_P(strct), strct, part, lenof(part), &tmp); \
+               zend_update_property(Z_OBJCE_P(strct), Z_OBJ_P(strct), part, lenof(part), &tmp); \
                zval_ptr_dtor(&tmp); \
        }
 
@@ -742,7 +743,11 @@ static inline size_t parse_mb(struct parse_state *state, parse_mb_what_t what, c
                        if (what == PARSE_HOSTINFO && (state->flags & PHP_HTTP_URL_PARSE_TOIDN)) {
                                /* idna */
                        } else if (state->flags & PHP_HTTP_URL_PARSE_MBUTF8) {
+#if PHP_HTTP_HAVE_LIBICU
+                               if (!u_isalnum(wchar)) {
+#else
                                if (!isualnum(wchar)) {
+#endif
                                        break;
                                }
 #if PHP_HTTP_HAVE_WCHAR
@@ -1016,7 +1021,7 @@ static ZEND_RESULT_CODE parse_uidn_2003(struct parse_state *state, size_t prev_l
 #      endif
 
        efree(uhost_str);
-       if (error > U_ZERO_ERROR) {
+       if (rc > U_ZERO_ERROR) {
                goto error;
        }
 
@@ -1979,7 +1984,7 @@ PHP_METHOD(HttpUrl, mod)
                if ((old_purl = php_http_url_from_struct(HASH_OF(getThis())))) {
                        php_http_url_t *res_purl;
 
-                       ZVAL_OBJ(return_value, zend_objects_clone_obj(getThis()));
+                       ZVAL_OBJ(return_value, zend_objects_clone_obj(Z_OBJ_P(getThis())));
 
                        res_purl = php_http_url_mod(old_purl, new_purl, flags);
                        php_http_url_to_struct(res_purl, return_value);
@@ -2029,11 +2034,14 @@ PHP_METHOD(HttpUrl, toArray)
        php_http_url_free(&purl);
 }
 
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(ai_HttpUrl___toString, 0, 0, IS_STRING, 0)
+ZEND_END_ARG_INFO();
+
 static zend_function_entry php_http_url_methods[] = {
-       PHP_ME(HttpUrl, __construct,  ai_HttpUrl___construct, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
+       PHP_ME(HttpUrl, __construct,  ai_HttpUrl___construct, ZEND_ACC_PUBLIC)
        PHP_ME(HttpUrl, mod,          ai_HttpUrl_mod, ZEND_ACC_PUBLIC)
        PHP_ME(HttpUrl, toString,     ai_HttpUrl_toString, ZEND_ACC_PUBLIC)
-       ZEND_MALIAS(HttpUrl, __toString, toString, ai_HttpUrl_toString, ZEND_ACC_PUBLIC)
+       ZEND_MALIAS(HttpUrl, __toString, toString, ai_HttpUrl___toString, ZEND_ACC_PUBLIC)
        PHP_ME(HttpUrl, toArray,      ai_HttpUrl_toArray, ZEND_ACC_PUBLIC)
        EMPTY_FUNCTION_ENTRY
 };
@@ -2083,14 +2091,14 @@ PHP_MINIT_FUNCTION(http_url)
 #endif
        zend_declare_class_constant_long(php_http_url_class_entry, ZEND_STRL("PARSE_TOPCT"), PHP_HTTP_URL_PARSE_TOPCT);
 
-       INIT_NS_CLASS_ENTRY(ce, "http\\Env", "Url", php_http_url_methods);
-       php_http_env_url_class_entry = zend_register_internal_class_ex(&ce, php_http_url_class_entry);
-
        zend_declare_class_constant_long(php_http_url_class_entry, ZEND_STRL("IGNORE_ERRORS"), PHP_HTTP_URL_IGNORE_ERRORS);
        zend_declare_class_constant_long(php_http_url_class_entry, ZEND_STRL("SILENT_ERRORS"), PHP_HTTP_URL_SILENT_ERRORS);
 
        zend_declare_class_constant_long(php_http_url_class_entry, ZEND_STRL("STDFLAGS"), PHP_HTTP_URL_STDFLAGS);
 
+       INIT_NS_CLASS_ENTRY(ce, "http\\Env", "Url", NULL);
+       php_http_env_url_class_entry = zend_register_internal_class_ex(&ce, php_http_url_class_entry);
+
        return SUCCESS;
 }
 
@@ -2103,4 +2111,3 @@ PHP_MINIT_FUNCTION(http_url)
  * vim600: noet sw=4 ts=4 fdm=marker
  * vim<600: noet sw=4 ts=4
  */
-