fix #41: PHP-8.1 compat
[m6w6/ext-pq] / src / php_pq_params.c
index 3c6b920c73d7dbb65ed4d06a907be75553fae2b2..259fbb9a13b1c4b6e3c2d243e5106f39c1e9763d 100644 (file)
@@ -81,13 +81,13 @@ static zend_string *object_param_to_string(php_pq_params_t *p, zval *zobj, Oid t
 
        switch (type) {
 #if PHP_PQ_HAVE_PHP_JSON_H && defined(PHP_PQ_OID_JSON)
-#      ifdef PHP_PQ_OID_JSONB
+# ifdef PHP_PQ_OID_JSONB
        case PHP_PQ_OID_JSONB:
-#      endif
+# endif
        case PHP_PQ_OID_JSON:
-#      if PHP_VERSION_ID >= 70100
+# if PHP_VERSION_ID >= 70100
                JSON_G(encode_max_depth) = PHP_JSON_PARSER_DEFAULT_DEPTH;
-#      endif
+# endif
                php_json_encode(&str, zobj, PHP_JSON_UNESCAPED_UNICODE);
                smart_str_0(&str);
                return str.s;
@@ -95,10 +95,10 @@ static zend_string *object_param_to_string(php_pq_params_t *p, zval *zobj, Oid t
 
        case PHP_PQ_OID_DATE:
                return php_pqdt_to_string(zobj, "Y-m-d");
-
+#ifdef PHP_PQ_OID_ABSTIME
        case PHP_PQ_OID_ABSTIME:
                return php_pqdt_to_string(zobj, "Y-m-d H:i:s");
-
+#endif
        case PHP_PQ_OID_TIMESTAMP:
                return php_pqdt_to_string(zobj, "Y-m-d H:i:s.u");
 
@@ -133,7 +133,7 @@ static int apply_to_param_from_array(zval *zparam, void *arg_ptr)
                zval ztype, rv;
 
                ZVAL_LONG(&ztype, arg->type);
-               zend_call_method_with_2_params(arg->zconv, NULL, NULL, "converttostring", &rv, zparam, &ztype);
+               php_pq_call_method(arg->zconv, "converttostring", 2, &rv, zparam, &ztype);
                tmpstr = zval_get_string(&rv);
                zval_ptr_dtor(&rv);
                goto append_string;
@@ -208,9 +208,9 @@ static zend_string *array_param_to_string(php_pq_params_t *p, zval *zarr, Oid ty
 
        switch (type) {
 #if PHP_PQ_HAVE_PHP_JSON_H && defined(PHP_PQ_OID_JSON)
-#      ifdef PHP_PQ_OID_JSONB
+# ifdef PHP_PQ_OID_JSONB
        case PHP_PQ_OID_JSONB:
-#      endif
+# endif
        case PHP_PQ_OID_JSON:
                php_json_encode(&s, zarr, PHP_JSON_UNESCAPED_UNICODE);
                break;
@@ -243,7 +243,7 @@ static void php_pq_params_set_param(php_pq_params_t *p, unsigned index, zval *zp
 
                ZVAL_NULL(&rv);
                ZVAL_LONG(&ztype, type);
-               zend_call_method_with_2_params(zconv, NULL, NULL, "converttostring", &rv, zpp, &ztype);
+               php_pq_call_method(zconv, "converttostring", 2, &rv, zpp, &ztype);
                convert_to_string(&rv);
                p->param.strings[index] = Z_STRVAL_P(&rv);
                zend_hash_next_index_insert(&p->param.dtor, &rv);
@@ -307,7 +307,8 @@ static int apply_to_params(zval *zp, void *arg_ptr)
 {
        struct apply_to_params_arg *arg = arg_ptr;
 
-       SEPARATE_ZVAL_IF_NOT_REF(zp);
+       ZVAL_DEREF(zp);
+       SEPARATE_ZVAL(zp);
        php_pq_params_set_param(arg->params, arg->index++, zp);
        return ZEND_HASH_APPLY_KEEP;
 }