Waits for any one of the passed Interbase events to be posted by the database, and returns its name */
PHP_FUNCTION(ibase_wait_event)
{
- zval **args[16];
+ zval ***args;
ibase_db_link *ib_link;
+ int num_args;
char *event_buffer, *result_buffer, *events[15];
unsigned short i = 0, event_count = 0, buffer_size;
unsigned long occurred_event[15];
WRONG_PARAM_COUNT;
}
- if (zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == FAILURE) {
- RETURN_FALSE;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "+", &args, &num_args) == FAILURE) {
+ return;
}
if (Z_TYPE_PP(args[0]) == IS_RESOURCE) {
-
- ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, args[0], -1, "InterBase link", le_link, le_plink);
+ if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link, ibase_db_link *, args[0], -1, "InterBase link", le_link, le_plink)) {
+ efree(args);
+ RETURN_FALSE;
+ }
i = 1;
-
} else {
-
if (ZEND_NUM_ARGS() > 15) {
+ efree(args);
WRONG_PARAM_COUNT;
}
-
- ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, IBG(default_link), "InterBase link", le_link, le_plink);
+ if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link, ibase_db_link *, NULL, IBG(default_link), "InterBase link", le_link, le_plink)) {
+ efree(args);
+ RETURN_FALSE;
+ }
}
for (; i < ZEND_NUM_ARGS(); ++i) {
if (isc_wait_for_event(IB_STATUS, &ib_link->handle, buffer_size, event_buffer, result_buffer)) {
_php_ibase_error(TSRMLS_C);
_php_ibase_event_free(event_buffer,result_buffer);
+ efree(args);
RETURN_FALSE;
}
if (occurred_event[i]) {
char *result = estrdup(events[i]);
_php_ibase_event_free(event_buffer,result_buffer);
+ efree(args);
RETURN_STRING(result,0);
}
}
/* If we reach this line, isc_wait_for_event() did return, but we don't know
which event fired. */
_php_ibase_event_free(event_buffer,result_buffer);
+ efree(args);
RETURN_FALSE;
}
/* }}} */
* used to determine if the event handler should remain set.
*/
char *cb_name;
- zval **args[17], **cb_arg;
+ zval ***args, **cb_arg;
ibase_db_link *ib_link;
ibase_event *event;
unsigned short i = 1, buffer_size;
- int link_res_id;
+ int link_res_id, num_args;
RESET_ERRMSG;
WRONG_PARAM_COUNT;
}
- if (zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == FAILURE) {
- RETURN_FALSE;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "+", &args, &num_args) == FAILURE) {
+ return;
}
/* get a working link */
* No more than 15 events
*/
if (ZEND_NUM_ARGS() < 3 || ZEND_NUM_ARGS() > 17) {
+ efree(args);
WRONG_PARAM_COUNT;
}
cb_arg = args[1];
i = 2;
- ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, args[0], -1,
- "InterBase link", le_link, le_plink);
+ if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link, ibase_db_link *, args[0], -1, "InterBase link", le_link, le_plink)) {
+ efree(args);
+ RETURN_FALSE;
+ }
convert_to_long_ex(args[0]);
link_res_id = Z_LVAL_PP(args[0]);
* No more than 15 events
*/
if (ZEND_NUM_ARGS() < 2 || ZEND_NUM_ARGS() > 16) {
+ efree(args);
WRONG_PARAM_COUNT;
}
cb_arg = args[0];
- ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, IBG(default_link),
- "InterBase link", le_link, le_plink);
+ if (!ZEND_FETCH_RESOURCE2_NO_RETURN(ib_link, ibase_db_link *, NULL, IBG(default_link), "InterBase link", le_link, le_plink)) {
+ efree(args);
+ RETURN_FALSE;
+ }
link_res_id = IBG(default_link);
}
if (!zend_is_callable(*cb_arg, 0, &cb_name TSRMLS_CC)) {
_php_ibase_module_error("Callback argument %s is not a callable function" TSRMLS_CC, cb_name);
efree(cb_name);
+ efree(args);
RETURN_FALSE;
}
efree(cb_name);
_php_ibase_error(TSRMLS_C);
efree(event);
+ efree(args);
RETURN_FALSE;
}
ZEND_REGISTER_RESOURCE(return_value, event, le_event);
zend_list_addref(Z_LVAL_P(return_value));
+ efree(args);
}
/* }}} */
{
zval *zlink, *ztrans, ***bind_args = NULL;
char *query;
- int bind_i, query_len;
+ int bind_i, query_len, bind_num;
long trans_res_id = 0;
ibase_db_link *ib_link = NULL;
ibase_trans *trans = NULL;
if (bind_n < expected_n) {
break;
}
- } else if (bind_n > 0) {
- bind_args = (zval ***) safe_emalloc(sizeof(zval **), ZEND_NUM_ARGS(), 0);
-
- if (FAILURE == zend_get_parameters_array_ex(ZEND_NUM_ARGS(), bind_args)) {
- break;
+ } else if (bind_n > 0) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "+", &bind_args, &bind_num) == FAILURE) {
+ return;
}
}
static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) /* {{{ */
{
zval *result_arg;
- long flag_arg;
long i, array_cnt = 0, flag = 0;
ibase_result *ib_result;
Get the number of params in a prepared query */
PHP_FUNCTION(ibase_num_params)
{
- zval **result;
+ zval *result;
ibase_query *ib_query;
RESET_ERRMSG;
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &result) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &result) == FAILURE) {
+ return;
}
- ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result, -1, LE_QUERY, le_query);
+ ZEND_FETCH_RESOURCE(ib_query, ibase_query *, &result, -1, LE_QUERY, le_query);
if (ib_query->in_sqlda == NULL) {
RETURN_LONG(0);
Get information about a parameter */
PHP_FUNCTION(ibase_param_info)
{
- zval **result_arg, **field_arg;
+ zval *result_arg;
+ long field_arg;
ibase_query *ib_query;
RESET_ERRMSG;
- if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &result_arg, &field_arg) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &result_arg, &field_arg) == FAILURE) {
+ return;
}
- ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result_arg, -1, LE_QUERY, le_query);
+ ZEND_FETCH_RESOURCE(ib_query, ibase_query *, &result_arg, -1, LE_QUERY, le_query);
if (ib_query->in_sqlda == NULL) {
RETURN_FALSE;
}
- convert_to_long_ex(field_arg);
-
- if (Z_LVAL_PP(field_arg) < 0 || Z_LVAL_PP(field_arg) >= ib_query->in_sqlda->sqld) {
+ if (field_arg < 0 || field_arg >= ib_query->in_sqlda->sqld) {
RETURN_FALSE;
}
- _php_ibase_field_info(return_value,ib_query->in_sqlda->sqlvar + Z_LVAL_PP(field_arg));
+ _php_ibase_field_info(return_value,ib_query->in_sqlda->sqlvar + field_arg);
}
/* }}} */