felipe Thu Nov 27 02:16:57 2008 UTC
Modified files:
/php-src/ext/interbase ibase_events.c ibase_query.c
/php-src/ext/interbase/tests ibase_num_params_001.phpt
ibase_param_info_001.phpt
Log:
- New parameter parsing API
http://cvs.php.net/viewvc.cgi/php-src/ext/interbase/ibase_events.c?r1=1.14&r2=1.15&diff_format=u
Index: php-src/ext/interbase/ibase_events.c
diff -u php-src/ext/interbase/ibase_events.c:1.14
php-src/ext/interbase/ibase_events.c:1.15
--- php-src/ext/interbase/ibase_events.c:1.14 Tue Oct 7 18:17:44 2008
+++ php-src/ext/interbase/ibase_events.c Thu Nov 27 02:16:56 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ibase_events.c,v 1.14 2008/10/07 18:17:44 felipe Exp $ */
+/* $Id: ibase_events.c,v 1.15 2008/11/27 02:16:56 felipe Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -126,8 +126,9 @@
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];
@@ -139,22 +140,25 @@
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) {
@@ -169,6 +173,7 @@
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;
}
@@ -178,6 +183,7 @@
if (occurred_event[i]) {
char *result = estrdup(events[i]);
_php_ibase_event_free(event_buffer,result_buffer);
+ efree(args);
RETURN_STRING(result,0);
}
}
@@ -185,6 +191,7 @@
/* 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;
}
/* }}} */
@@ -261,11 +268,11 @@
* used to determine if the event handler should remain set.
*/
zval 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;
@@ -274,8 +281,8 @@
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 */
@@ -284,14 +291,17 @@
* 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]);
@@ -301,13 +311,16 @@
* 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);
}
@@ -315,6 +328,7 @@
if (!zend_is_callable(*cb_arg, 0, &cb_name TSRMLS_CC)) {
_php_ibase_module_error("Callback argument %v is not a callable
function" TSRMLS_CC, Z_UNIVAL(cb_name));
zval_dtor(&cb_name);
+ efree(args);
RETURN_FALSE;
}
zval_dtor(&cb_name);
@@ -348,6 +362,7 @@
_php_ibase_error(TSRMLS_C);
efree(event);
+ efree(args);
RETURN_FALSE;
}
@@ -356,6 +371,7 @@
ZEND_REGISTER_RESOURCE(return_value, event, le_event);
zend_list_addref(Z_LVAL_P(return_value));
+ efree(args);
}
/* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/interbase/ibase_query.c?r1=1.38&r2=1.39&diff_format=u
Index: php-src/ext/interbase/ibase_query.c
diff -u php-src/ext/interbase/ibase_query.c:1.38
php-src/ext/interbase/ibase_query.c:1.39
--- php-src/ext/interbase/ibase_query.c:1.38 Sun Nov 23 20:00:51 2008
+++ php-src/ext/interbase/ibase_query.c Thu Nov 27 02:16:56 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ibase_query.c,v 1.38 2008/11/23 20:00:51 felipe Exp $ */
+/* $Id: ibase_query.c,v 1.39 2008/11/27 02:16:56 felipe Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -1068,7 +1068,7 @@
{
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;
@@ -1174,11 +1174,9 @@
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;
}
}
@@ -1484,7 +1482,6 @@
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;
@@ -2052,16 +2049,16 @@
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);
@@ -2075,28 +2072,27 @@
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);
}
/* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/interbase/tests/ibase_num_params_001.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/ext/interbase/tests/ibase_num_params_001.phpt
diff -u php-src/ext/interbase/tests/ibase_num_params_001.phpt:1.2
php-src/ext/interbase/tests/ibase_num_params_001.phpt:1.3
--- php-src/ext/interbase/tests/ibase_num_params_001.phpt:1.2 Mon Nov 10
22:33:00 2008
+++ php-src/ext/interbase/tests/ibase_num_params_001.phpt Thu Nov 27
02:16:56 2008
@@ -23,10 +23,10 @@
--EXPECTF--
int(2)
-Warning: Wrong parameter count for ibase_num_params() in %s on line %d
+Warning: ibase_num_params() expects exactly 1 parameter, 0 given in %s on line
%d
NULL
-Warning: ibase_prepare(): Dynamic SQL Error SQL error code = -206 Column
unknown X At line 1, column 52%s in %s on line %d
+Warning: ibase_prepare(): Dynamic SQL Error SQL error code = -206 Column
unknown X At line 1, column 52 in %s on line %d
-Warning: ibase_num_params(): supplied argument is not a valid
Firebird/InterBase query resource in %s on line %d
-bool(false)
+Warning: ibase_num_params() expects parameter 1 to be resource, boolean given
in %s on line %d
+NULL
http://cvs.php.net/viewvc.cgi/php-src/ext/interbase/tests/ibase_param_info_001.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/interbase/tests/ibase_param_info_001.phpt
diff -u php-src/ext/interbase/tests/ibase_param_info_001.phpt:1.1
php-src/ext/interbase/tests/ibase_param_info_001.phpt:1.2
--- php-src/ext/interbase/tests/ibase_param_info_001.phpt:1.1 Mon Nov 10
18:01:36 2008
+++ php-src/ext/interbase/tests/ibase_param_info_001.phpt Thu Nov 27
02:16:56 2008
@@ -49,5 +49,5 @@
bool(false)
---
-Warning: Wrong parameter count for ibase_param_info() in %s on line %d
+Warning: ibase_param_info() expects exactly 2 parameters, 1 given in %s on
line %d
NULL
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php