- fix endless loop in http_build_url() with urls like "/.foo"
[m6w6/ext-http] / http_querystring_object.c
index fc17c4377092df3e78a9abd88934546a3348265e..e026052e3c3394cb5c87c5c0f2f133b85276c6ef 100644 (file)
@@ -49,9 +49,8 @@ HTTP_BEGIN_ARGS(get, 0, 0)
        HTTP_ARG_VAL(delete, 0)
 HTTP_END_ARGS;
 
-HTTP_BEGIN_ARGS(set, 0, 2)
-       HTTP_ARG_VAL(name, 0)
-       HTTP_ARG_VAL(value, 0)
+HTTP_BEGIN_ARGS(set, 0, 1)
+       HTTP_ARG_VAL(params, 0)
 HTTP_END_ARGS;
 
 HTTP_BEGIN_ARGS(__getter, 0, 1)
@@ -223,7 +222,9 @@ static inline int _http_querystring_modify_array(zval *qarray, zval *array TSRML
 #define http_querystring_modify(q, p) _http_querystring_modify((q), (p) TSRMLS_CC)
 static inline int _http_querystring_modify(zval *qarray, zval *params TSRMLS_DC)
 {
-       if (Z_TYPE_P(params) == IS_ARRAY) {
+       if ((Z_TYPE_P(params) == IS_OBJECT) && instanceof_function(Z_OBJCE_P(params), http_querystring_object_ce TSRMLS_CC)) {
+               return http_querystring_modify_array(qarray, GET_PROP_EX(params, queryArray));
+       } else if (Z_TYPE_P(params) == IS_ARRAY) {
                return http_querystring_modify_array(qarray, params);
        } else {
                int rv;