From 8f968c5416e721983c0efda25ec1f393c8df662a Mon Sep 17 00:00:00 2001 From: Popa Adrian Marius Date: Fri, 13 Feb 2015 17:55:17 +0200 Subject: [PATCH] Apply PHP7 firebird fixes after API Cleanup from https://github.com/Jan-E/php-src/commit/8c920a22ac65da485eaf3d2fd27baf2b0406116e --- ext/interbase/ibase_blobs.c | 33 ++++++++------- ext/interbase/ibase_events.c | 14 +++---- ext/interbase/ibase_query.c | 66 +++++++++++++++--------------- ext/interbase/ibase_service.c | 12 +++--- ext/interbase/interbase.c | 40 +++++++++--------- ext/interbase/php_ibase_includes.h | 17 +++++--- 6 files changed, 94 insertions(+), 88 deletions(-) diff --git a/ext/interbase/ibase_blobs.c b/ext/interbase/ibase_blobs.c index 99c5f34bda..b6bda55c1a 100644 --- a/ext/interbase/ibase_blobs.c +++ b/ext/interbase/ibase_blobs.c @@ -229,8 +229,8 @@ PHP_FUNCTION(ibase_blob_create) RETURN_FALSE; } - ZEND_REGISTER_RESOURCE(return_value, ib_blob, le_blob); - Z_ADDREF_P(return_value); + RETVAL_RES(zend_register_resource(ib_blob, le_blob)); + Z_TRY_ADDREF_P(return_value); } /* }}} */ @@ -280,8 +280,8 @@ PHP_FUNCTION(ibase_blob_open) break; } - ZEND_REGISTER_RESOURCE(return_value, ib_blob, le_blob); - Z_ADDREF_P(return_value); + RETVAL_RES(zend_register_resource(ib_blob, le_blob)); + Z_TRY_ADDREF_P(return_value); return; } while (0); @@ -300,11 +300,11 @@ PHP_FUNCTION(ibase_blob_add) RESET_ERRMSG; - if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &blob_arg, &string_arg) == FAILURE) { - WRONG_PARAM_COUNT; + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr", &blob_arg, &string_arg)) { + return; } - ZEND_FETCH_RESOURCE(ib_blob, ibase_blob *, blob_arg, -1, "Interbase blob", le_blob); + ib_blob = (ibase_blob *)zend_fetch_resource_ex(blob_arg, "Interbase blob", le_blob); if (ib_blob->type != BLOB_INPUT) { _php_ibase_module_error("BLOB is not open for input"); @@ -321,25 +321,24 @@ PHP_FUNCTION(ibase_blob_add) Get len bytes data from open blob */ PHP_FUNCTION(ibase_blob_get) { - zval *blob_arg, *len_arg; + zval *blob_arg; + unsigned long len_arg; ibase_blob *ib_blob; RESET_ERRMSG; - if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &blob_arg, &len_arg) == FAILURE) { - WRONG_PARAM_COUNT; + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &blob_arg, &len_arg)) { + return; } - ZEND_FETCH_RESOURCE(ib_blob, ibase_blob *, blob_arg, -1, "Interbase blob", le_blob); + ib_blob = (ibase_blob *)zend_fetch_resource_ex(blob_arg, "Interbase blob", le_blob); if (ib_blob->type != BLOB_OUTPUT) { _php_ibase_module_error("BLOB is not open for output"); RETURN_FALSE; } - convert_to_long_ex(len_arg); - - if (_php_ibase_blob_get(return_value, ib_blob, Z_LVAL_P(len_arg)) != SUCCESS) { + if (_php_ibase_blob_get(return_value, ib_blob, len_arg) != SUCCESS) { RETURN_FALSE; } } @@ -353,11 +352,11 @@ static void _php_ibase_blob_end(INTERNAL_FUNCTION_PARAMETERS, int bl_end) /* {{{ RESET_ERRMSG; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &blob_arg) == FAILURE) { - WRONG_PARAM_COUNT; + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &blob_arg)) { + return; } - ZEND_FETCH_RESOURCE(ib_blob, ibase_blob *, blob_arg, -1, "Interbase blob", le_blob); + ib_blob = (ibase_blob *)zend_fetch_resource_ex(blob_arg, "Interbase blob", le_blob); if (bl_end == BLOB_CLOSE) { /* return id here */ diff --git a/ext/interbase/ibase_events.c b/ext/interbase/ibase_events.c index 67d47d0f90..a454b2d011 100644 --- a/ext/interbase/ibase_events.c +++ b/ext/interbase/ibase_events.c @@ -142,7 +142,7 @@ PHP_FUNCTION(ibase_wait_event) } if (Z_TYPE(args[0]) == IS_RESOURCE) { - if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link, ibase_db_link *, &args[0], -1, "InterBase link", le_link, le_plink)) { + if ((ib_link = (ibase_db_link *)zend_fetch_resource2_ex(&args[0], "InterBase link", le_link, le_plink)) == NULL) { efree(args); RETURN_FALSE; } @@ -152,7 +152,7 @@ PHP_FUNCTION(ibase_wait_event) efree(args); WRONG_PARAM_COUNT; } - if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link, ibase_db_link *, NULL, IBG(default_link), "InterBase link", le_link, le_plink)) { + if ((ib_link = (ibase_db_link *)zend_fetch_resource2_ex(IBG(default_link), "InterBase link", le_link, le_plink)) == NULL) { efree(args); RETURN_FALSE; } @@ -293,7 +293,7 @@ PHP_FUNCTION(ibase_set_event_handler) cb_arg = &args[1]; i = 2; - if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link, ibase_db_link *, &args[0], -1, "InterBase link", le_link, le_plink)) { + if ((ib_link = (ibase_db_link *)zend_fetch_resource2_ex(&args[0], "InterBase link", le_link, le_plink)) == NULL) { RETURN_FALSE; } @@ -310,7 +310,7 @@ PHP_FUNCTION(ibase_set_event_handler) cb_arg = &args[0]; - if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link, ibase_db_link *, NULL, IBG(default_link), "InterBase link", le_link, le_plink)) { + if ((ib_link = (ibase_db_link *)zend_fetch_resource2_ex(IBG(default_link), "InterBase link", le_link, le_plink)) == NULL) { RETURN_FALSE; } link_res_id = IBG(default_link); @@ -356,8 +356,8 @@ PHP_FUNCTION(ibase_set_event_handler) event->event_next = ib_link->event_head; ib_link->event_head = event; - ZEND_REGISTER_RESOURCE(return_value, event, le_event); - Z_ADDREF_P(return_value); + RETVAL_RES(zend_register_resource(event, le_event)); + Z_TRY_ADDREF_P(return_value); } /* }}} */ @@ -372,7 +372,7 @@ PHP_FUNCTION(ibase_free_event_handler) if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS(), "r", &event_arg)) { ibase_event *event; - ZEND_FETCH_RESOURCE(event, ibase_event *, event_arg, -1, "Interbase event", le_event); + event = (ibase_event *)zend_fetch_resource_ex(event_arg, "Interbase event", le_event); event->state = DEAD; diff --git a/ext/interbase/ibase_query.c b/ext/interbase/ibase_query.c index a4259c54f6..1d75bd8f3a 100644 --- a/ext/interbase/ibase_query.c +++ b/ext/interbase/ibase_query.c @@ -910,8 +910,8 @@ static int _php_ibase_exec(INTERNAL_FUNCTION_PARAMETERS, ibase_result **ib_resul (*l)->trans = trans; (*l)->next = NULL; - ZEND_REGISTER_RESOURCE(return_value, trans, le_trans); - Z_ADDREF_P(return_value); + RETVAL_RES(zend_register_resource(trans, le_trans)); + Z_TRY_ADDREF_P(return_value); return SUCCESS; @@ -1080,8 +1080,8 @@ PHP_FUNCTION(ibase_query) if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, 3, "rrs", &zlink, &ztrans, &query, &query_len)) { - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link*, zlink, -1, LE_LINK, le_link, le_plink); - ZEND_FETCH_RESOURCE(trans, ibase_trans*, ztrans, -1, LE_TRANS, le_trans); + ib_link = (ibase_db_link*)zend_fetch_resource2_ex(zlink, LE_LINK, le_link, le_plink); + trans = (ibase_trans*)zend_fetch_resource_ex(ztrans, LE_TRANS, le_trans); trans_res_id = Z_RES_P(ztrans)->handle; bind_i = 3; @@ -1131,8 +1131,8 @@ PHP_FUNCTION(ibase_query) ib_link->tr_list = NULL; ib_link->event_head = NULL; - ZEND_REGISTER_RESOURCE(return_value, ib_link, le_link); - Z_ADDREF_P(return_value); + RETVAL_RES(zend_register_resource(ib_link, le_link)); + Z_TRY_ADDREF_P(return_value); IBG(default_link) = Z_RES_P(return_value)->handle; ++IBG(num_links); } @@ -1142,7 +1142,7 @@ PHP_FUNCTION(ibase_query) case 0: if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() ? 1 : 0, "s", &query, &query_len)) { - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, IBG(default_link), LE_LINK, + ib_link = (ibase_db_link *)zend_fetch_resource2_ex(IBG(default_link), LE_LINK, le_link, le_plink); bind_i = 1; @@ -1186,8 +1186,8 @@ PHP_FUNCTION(ibase_query) if (ib_query.statement_type != isc_info_sql_stmt_exec_procedure) { ib_query.stmt = NULL; /* keep stmt when free query */ } - ZEND_REGISTER_RESOURCE(return_value, result, le_result); - Z_ADDREF_P(return_value); + RETVAL_RES(zend_register_resource(result, le_result)); + Z_TRY_ADDREF_P(return_value); } } while (0); @@ -1211,7 +1211,7 @@ PHP_FUNCTION(ibase_affected_rows) } if (!arg) { - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, IBG(default_link), LE_LINK, le_link, le_plink); + ib_link = (ibase_db_link *)zend_fetch_resource2_ex(IBG(default_link), LE_LINK, le_link, le_plink); if (ib_link->tr_list == NULL || ib_link->tr_list->trans == NULL) { RETURN_FALSE; } @@ -1220,7 +1220,7 @@ PHP_FUNCTION(ibase_affected_rows) /* one id was passed, could be db or trans id */ _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, arg, &ib_link, &trans); if (trans == NULL) { - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, arg, -1, LE_LINK, le_link, le_plink); + ib_link = (ibase_db_link *)zend_fetch_resource2_ex(arg, LE_LINK, le_link, le_plink); if (ib_link->tr_list == NULL || ib_link->tr_list->trans == NULL) { RETURN_FALSE; @@ -1268,7 +1268,7 @@ PHP_FUNCTION(ibase_num_rows) return; } - ZEND_FETCH_RESOURCE(ib_result, ibase_result *, &result_arg, -1, LE_RESULT, le_result); + ib_result = (ibase_result *)zend_fetch_resource_ex(&result_arg, LE_RESULT, le_result); if (isc_dsql_sql_info(IB_STATUS, &ib_result->stmt, sizeof(info_count), info_count, sizeof(result), result)) { _php_ibase_error(); @@ -1335,7 +1335,7 @@ static int _php_ibase_var_zval(zval *val, void *data, int type, int len, /* {{{ #else if (scale == 0) { l = slprintf(string_data, sizeof(string_data), "%" LL_MASK "d", *(ISC_INT64 *) data); - ZVAL_STRINGL(val,string_data,l,1); + ZVAL_STRINGL(val,string_data,l); } else { ISC_INT64 n = *(ISC_INT64 *) data, f = scales[-scale]; @@ -1346,7 +1346,7 @@ static int _php_ibase_var_zval(zval *val, void *data, int type, int len, /* {{{ } else { l = slprintf(string_data, sizeof(string_data), "-0.%0*" LL_MASK "d", -scale, -n % f); } - ZVAL_STRINGL(val,string_data,l,1); + ZVAL_STRINGL(val,string_data,l); } break; #endif @@ -1482,7 +1482,7 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) return; } - ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, LE_RESULT, le_result); + ib_result = (ibase_result *)zend_fetch_resource_ex(result_arg, LE_RESULT, le_result); if (ib_result->out_sqlda == NULL || !ib_result->has_more_rows) { RETURN_FALSE; @@ -1698,7 +1698,7 @@ PHP_FUNCTION(ibase_name_result) return; } - ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, LE_RESULT, le_result); + ib_result = (ibase_result *)zend_fetch_resource_ex(result_arg, LE_RESULT, le_result); if (isc_dsql_set_cursor_name(IB_STATUS, &ib_result->stmt, name_arg, 0)) { _php_ibase_error(); @@ -1722,7 +1722,7 @@ PHP_FUNCTION(ibase_free_result) return; } - ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, LE_RESULT, le_result); + ib_result = (ibase_result *)zend_fetch_resource_ex(result_arg, LE_RESULT, le_result); zend_list_delete(Z_RES_P(result_arg)); RETURN_TRUE; } @@ -1745,7 +1745,7 @@ PHP_FUNCTION(ibase_prepare) if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &query, &query_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, IBG(default_link), LE_LINK, le_link, le_plink); + ib_link = (ibase_db_link *)zend_fetch_resource2_ex(IBG(default_link), LE_LINK, le_link, le_plink); } else if (ZEND_NUM_ARGS() == 2) { if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs", &link_arg, &query, &query_len) == FAILURE) { return; @@ -1759,8 +1759,8 @@ PHP_FUNCTION(ibase_prepare) if (zend_parse_parameters(ZEND_NUM_ARGS(), "rrs", &link_arg, &trans_arg, &query, &query_len) == FAILURE) { return; } - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, link_arg, -1, LE_LINK, le_link, le_plink); - ZEND_FETCH_RESOURCE(trans, ibase_trans *, trans_arg, -1, LE_TRANS, le_trans); + ib_link = (ibase_db_link *)zend_fetch_resource2_ex(link_arg, LE_LINK, le_link, le_plink); + trans = (ibase_trans *)zend_fetch_resource_ex(trans_arg, LE_TRANS, le_trans); trans_res_id = Z_RES_P(trans_arg)->handle; } @@ -1774,8 +1774,8 @@ PHP_FUNCTION(ibase_prepare) efree(ib_query); RETURN_FALSE; } - ZEND_REGISTER_RESOURCE(return_value, ib_query, le_query); - Z_ADDREF_P(return_value); + RETVAL_RES(zend_register_resource(ib_query, le_query)); + Z_TRY_ADDREF_P(return_value); } /* }}} */ @@ -1796,7 +1796,7 @@ PHP_FUNCTION(ibase_execute) return; } - ZEND_FETCH_RESOURCE(ib_query, ibase_query *, query, -1, LE_QUERY, le_query); + ib_query = (ibase_query *)zend_fetch_resource_ex(query, LE_QUERY, le_query); do { int expected_n = ib_query->in_sqlda ? ib_query->in_sqlda->sqld : 0; @@ -1849,8 +1849,8 @@ PHP_FUNCTION(ibase_execute) ret = zend_list_insert(result, le_result); ib_query->result_res_id = Z_RES_HANDLE_P(ret); ZVAL_COPY_VALUE(return_value, ret); - Z_ADDREF_P(return_value); - Z_ADDREF_P(return_value); + Z_TRY_ADDREF_P(return_value); + Z_TRY_ADDREF_P(return_value); } } while (0); } @@ -1869,7 +1869,7 @@ PHP_FUNCTION(ibase_free_query) return; } - ZEND_FETCH_RESOURCE(ib_query, ibase_query *, query_arg, -1, LE_QUERY, le_query); + ib_query = (ibase_query *)zend_fetch_resource_ex(query_arg, LE_QUERY, le_query); zend_list_close(Z_RES_P(query_arg)); RETURN_TRUE; } @@ -1893,13 +1893,13 @@ PHP_FUNCTION(ibase_num_fields) if (type == le_query) { ibase_query *ib_query; - - ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result, -1, LE_QUERY, le_query); + + ib_query = (ibase_query *)zend_fetch_resource_ex(result, LE_QUERY, le_query); sqlda = ib_query->out_sqlda; } else { ibase_result *ib_result; - ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result, -1, LE_RESULT, le_result); + ib_result = (ibase_result *)zend_fetch_resource_ex(result, LE_RESULT, le_result); sqlda = ib_result->out_sqlda; } @@ -2018,12 +2018,12 @@ PHP_FUNCTION(ibase_field_info) if (type == le_query) { ibase_query *ib_query; - ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result_arg, -1, LE_QUERY, le_query); + ib_query= (ibase_query *)zend_fetch_resource_ex(result_arg, LE_QUERY, le_query); sqlda = ib_query->out_sqlda; } else { ibase_result *ib_result; - ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, LE_RESULT, le_result); + ib_result = (ibase_result *)zend_fetch_resource_ex(result_arg, LE_RESULT, le_result); sqlda = ib_result->out_sqlda; } @@ -2052,7 +2052,7 @@ PHP_FUNCTION(ibase_num_params) return; } - ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result, -1, LE_QUERY, le_query); + ib_query = (ibase_query *)zend_fetch_resource_ex(result, LE_QUERY, le_query); if (ib_query->in_sqlda == NULL) { RETURN_LONG(0); @@ -2076,7 +2076,7 @@ PHP_FUNCTION(ibase_param_info) return; } - ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result_arg, -1, LE_QUERY, le_query); + ib_query = (ibase_query *)zend_fetch_resource_ex(result_arg, LE_QUERY, le_query); if (ib_query->in_sqlda == NULL) { RETURN_FALSE; diff --git a/ext/interbase/ibase_service.c b/ext/interbase/ibase_service.c index 158cae8500..a7133bd90e 100644 --- a/ext/interbase/ibase_service.c +++ b/ext/interbase/ibase_service.c @@ -151,7 +151,7 @@ static void _php_ibase_user(INTERNAL_FUNCTION_PARAMETERS, char operation) /* {{{ RETURN_FALSE; } - ZEND_FETCH_RESOURCE(svm, ibase_service *, res, -1, "Interbase service manager handle", + svm = (ibase_service *)zend_fetch_resource_ex(res, "Interbase service manager handle", le_service); buf[0] = operation; @@ -245,8 +245,8 @@ PHP_FUNCTION(ibase_service_attach) svm->hostname = estrdup(host); svm->username = estrdup(user); - ZEND_REGISTER_RESOURCE(return_value, svm, le_service); - Z_ADDREF_P(return_value); + RETVAL_RES(zend_register_resource(svm, le_service)); + Z_TRY_ADDREF_P(return_value); svm->res = Z_RES_P(return_value); } /* }}} */ @@ -437,7 +437,7 @@ static void _php_ibase_backup_restore(INTERNAL_FUNCTION_PARAMETERS, char operati RETURN_FALSE; } - ZEND_FETCH_RESOURCE(svm, ibase_service *, res, -1, + svm = (ibase_service *)zend_fetch_resource_ex(res, "Interbase service manager handle", le_service); /* fill the param buffer */ @@ -500,7 +500,7 @@ static void _php_ibase_service_action(INTERNAL_FUNCTION_PARAMETERS, char svc_act RETURN_FALSE; } - ZEND_FETCH_RESOURCE(svm, ibase_service *, res, -1, + svm = (ibase_service *)zend_fetch_resource_ex(res, "Interbase service manager handle", le_service); if (svc_action == isc_action_svc_db_stats) { @@ -606,7 +606,7 @@ PHP_FUNCTION(ibase_server_info) RETURN_FALSE; } - ZEND_FETCH_RESOURCE(svm, ibase_service *, res, -1, + svm = (ibase_service *)zend_fetch_resource_ex(res, "Interbase service manager handle", le_service); _php_ibase_service_query(INTERNAL_FUNCTION_PARAM_PASSTHRU, svm, (char)action); diff --git a/ext/interbase/interbase.c b/ext/interbase/interbase.c index c12e045dc3..1cb0be5d5a 100644 --- a/ext/interbase/interbase.c +++ b/ext/interbase/interbase.c @@ -505,11 +505,11 @@ PHP_FUNCTION(ibase_errcode) void _php_ibase_error(void) /* {{{ */ { char *s = IBG(errmsg); - ISC_STATUS *statusp = IB_STATUS; + const ISC_STATUS *statusp = IB_STATUS; IBG(sql_code) = isc_sqlcode(IB_STATUS); - while ((s - IBG(errmsg)) < MAX_ERRMSG - (IBASE_MSGSIZE + 2) && isc_interprete(s, &statusp)) { + while ((s - IBG(errmsg)) < MAX_ERRMSG - (IBASE_MSGSIZE + 2) && fb_interpret(s, MAX_ERRMSG, &statusp)) { strcat(IBG(errmsg), " "); s = IBG(errmsg) + strlen(IBG(errmsg)); } @@ -553,7 +553,7 @@ void _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAMETERS, /* {{{ */ /* Transaction resource: make sure it refers to one link only, then fetch it; database link is stored in ib_trans->db_link[]. */ IBDEBUG("Type is le_trans"); - ZEND_FETCH_RESOURCE(*trans, ibase_trans *, link_id, -1, LE_TRANS, le_trans); + *trans = (ibase_trans *)zend_fetch_resource_ex(link_id, LE_TRANS, le_trans); if ((*trans)->link_cnt > 1) { _php_ibase_module_error("Link id is ambiguous: transaction spans multiple connections." ); @@ -565,7 +565,7 @@ void _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAMETERS, /* {{{ */ IBDEBUG("Type is le_[p]link or id not found"); /* Database link resource, use default transaction. */ *trans = NULL; - ZEND_FETCH_RESOURCE2(*ib_link, ibase_db_link *, link_id, -1, LE_LINK, le_link, le_plink); + *ib_link = (ibase_db_link *)zend_fetch_resource2_ex(link_id, LE_LINK, le_link, le_plink); } /* }}} */ @@ -941,7 +941,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* xlink->gc.refcount++; xlink->gc.refcount++; IBG(default_link) = xlink->handle; - RETURN_RES(xlink); + RETVAL_RES(xlink); } else { zend_hash_str_del(&EG(regular_list), hash, sizeof(hash)-1); } @@ -961,7 +961,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* /* check if connection has timed out */ ib_link = (ibase_db_link *) le->ptr; if (!isc_database_info(status, &ib_link->handle, sizeof(info), info, sizeof(result), result)) { - ZEND_REGISTER_RESOURCE(return_value, ib_link, le_plink); + RETVAL_RES(zend_register_resource(ib_link, le_plink)); break; } zend_hash_str_del(&EG(persistent_list), hash, sizeof(hash)-1); @@ -982,7 +982,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* /* use non-persistent if allowed number of persistent links is exceeded */ if (!persistent || ((l = INI_INT("ibase.max_persistent") != -1) && IBG(num_persistent) >= l)) { ib_link = (ibase_db_link *) emalloc(sizeof(ibase_db_link)); - ZEND_REGISTER_RESOURCE(return_value, ib_link, le_link); + RETVAL_RES(zend_register_resource(ib_link, le_link)); } else { zend_resource new_le; @@ -999,7 +999,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* free(ib_link); RETURN_FALSE; } - ZEND_REGISTER_RESOURCE(return_value, ib_link, le_plink); + RETVAL_RES(zend_register_resource(ib_link, le_plink)); ++IBG(num_persistent); } ib_link->handle = db_handle; @@ -1024,8 +1024,8 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* } } IBG(default_link) = Z_RES_P(return_value)->handle; - Z_ADDREF_P(return_value); - Z_ADDREF_P(return_value); + Z_TRY_ADDREF_P(return_value); + Z_TRY_ADDREF_P(return_value); } /* }}} */ @@ -1067,7 +1067,7 @@ PHP_FUNCTION(ibase_close) link_id = Z_RES_P(link_arg)->handle; } - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, link_arg, link_id, LE_LINK, le_link, le_plink); + ib_link = (ibase_db_link *)zend_fetch_resource2_ex(link_arg, LE_LINK, le_link, le_plink); if (!link_arg) { link_arg = zend_hash_index_find(&EG(regular_list), link_id); zend_list_delete(Z_RES_P(link_arg)); @@ -1105,7 +1105,7 @@ PHP_FUNCTION(ibase_drop_db) link_id = Z_RES_P(link_arg)->handle; } - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, link_arg, link_id, LE_LINK, le_link, le_plink); + ib_link = (ibase_db_link *)zend_fetch_resource2_ex(link_arg, LE_LINK, le_link, le_plink); if (isc_drop_database(IB_STATUS, &ib_link->handle)) { _php_ibase_error(); @@ -1168,7 +1168,7 @@ PHP_FUNCTION(ibase_trans) if (Z_TYPE(args[i]) == IS_RESOURCE) { - if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link[link_cnt], ibase_db_link *, &args[i], -1, LE_LINK, le_link, le_plink)) { + if ((ib_link[link_cnt] = (ibase_db_link *)zend_fetch_resource2_ex(&args[i], LE_LINK, le_link, le_plink)) == NULL) { efree(teb); efree(tpb); efree(ib_link); @@ -1236,7 +1236,7 @@ PHP_FUNCTION(ibase_trans) if (link_cnt == 0) { link_cnt = 1; - if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link[0], ibase_db_link *, NULL, IBG(default_link), LE_LINK, le_link, le_plink)) { + if ((ib_link[0] = (ibase_db_link *)zend_fetch_resource2_ex(IBG(default_link), LE_LINK, le_link, le_plink)) == NULL) { efree(ib_link); RETURN_FALSE; } @@ -1273,8 +1273,8 @@ PHP_FUNCTION(ibase_trans) (*l)->next = NULL; } efree(ib_link); - ZEND_REGISTER_RESOURCE(return_value, ib_trans, le_trans); - Z_ADDREF_P(return_value); + RETVAL_RES(zend_register_resource(ib_trans, le_trans)); + Z_TRY_ADDREF_P(return_value); } /* }}} */ @@ -1330,7 +1330,7 @@ static void _php_ibase_trans_end(INTERNAL_FUNCTION_PARAMETERS, int commit) /* {{ } if (ZEND_NUM_ARGS() == 0) { - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, IBG(default_link), LE_LINK, le_link, le_plink); + ib_link = (ibase_db_link *)zend_fetch_resource2_ex(IBG(default_link), LE_LINK, le_link, le_plink); if (ib_link->tr_list == NULL || ib_link->tr_list->trans == NULL) { /* this link doesn't have a default transaction */ _php_ibase_module_error("Default link has no default transaction"); @@ -1340,10 +1340,10 @@ static void _php_ibase_trans_end(INTERNAL_FUNCTION_PARAMETERS, int commit) /* {{ } else { /* one id was passed, could be db or trans id */ if (Z_RES_P(arg)->type == le_trans) { - ZEND_FETCH_RESOURCE(trans, ibase_trans *, arg, -1, LE_TRANS, le_trans); + trans = (ibase_trans *)zend_fetch_resource_ex(arg, LE_TRANS, le_trans); res_id = Z_RES_P(arg)->handle; } else { - ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, arg, -1, LE_LINK, le_link, le_plink); + ib_link = (ibase_db_link *)zend_fetch_resource2_ex(arg, LE_LINK, le_link, le_plink); if (ib_link->tr_list == NULL || ib_link->tr_list->trans == NULL) { /* this link doesn't have a default transaction */ @@ -1467,7 +1467,7 @@ PHP_FUNCTION(ibase_gen_id) int l; l = spprintf(&res, 0, "%" LL_MASK "d", result); - RETURN_STRINGL(res, l, 0); + RETURN_STRINGL(res, l); } #endif RETURN_LONG((long)result); diff --git a/ext/interbase/php_ibase_includes.h b/ext/interbase/php_ibase_includes.h index 1853c40051..99f3366f50 100644 --- a/ext/interbase/php_ibase_includes.h +++ b/ext/interbase/php_ibase_includes.h @@ -101,7 +101,7 @@ typedef struct event { char **events; char *event_buffer, *result_buffer; zval callback; - void **thread_ctx; + void *thread_ctx; struct event *event_next; enum event_state { NEW, ACTIVE, DEAD } state; } ibase_event; @@ -128,7 +128,14 @@ enum php_interbase_option { }; #ifdef ZTS -#define IBG(v) TSRMG(ibase_globals_id, zend_ibase_globals *, v) +#else +#endif + +#ifdef ZTS +# define IBG(v) ZEND_TSRMG(ibase_globals_id, zend_ibase_globals *, v) +# ifdef COMPILE_DL_INTERBASE +ZEND_TSRMLS_CACHE_EXTERN; +# endif #else #define IBG(v) (ibase_globals.v) #endif @@ -155,9 +162,9 @@ void _php_ibase_module_error(char *, ...) /* determine if a resource is a link or transaction handle */ #define PHP_IBASE_LINK_TRANS(zv, lh, th) \ - do { if (!zv) { \ - ZEND_FETCH_RESOURCE2(lh, ibase_db_link *, NULL, IBG(default_link), \ - "InterBase link", le_link, le_plink) } \ + do { if (!zv) { \ + lh = (ibase_db_link *)zend_fetch_resource2(IBG(default_link), \ + "InterBase link", le_link, le_plink); } \ else \ _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, zv, &lh, &th); \ if (SUCCESS != _php_ibase_def_trans(lh, &th)) { RETURN_FALSE; } \ -- 2.40.0