summaryrefslogtreecommitdiff
path: root/ext/interbase/php_ibase_udf.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/interbase/php_ibase_udf.c')
-rw-r--r--ext/interbase/php_ibase_udf.c50
1 files changed, 25 insertions, 25 deletions
diff --git a/ext/interbase/php_ibase_udf.c b/ext/interbase/php_ibase_udf.c
index e96b734291..5a53df8b6b 100644
--- a/ext/interbase/php_ibase_udf.c
+++ b/ext/interbase/php_ibase_udf.c
@@ -183,12 +183,11 @@ static ISC_INT64 const scales[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10
static void call_php(char *name, PARAMDSC *r, int argc, PARAMDSC **argv)
{
do {
- zval callback, args[4], *argp[4], return_value;
+ zval callback, args[4], return_value;
PARAMVARY *res = (PARAMVARY*)r->dsc_address;
int i;
- INIT_ZVAL(callback);
- ZVAL_STRING(&callback,name,0);
+ ZVAL_STRING(&callback, name);
LOCK();
@@ -202,12 +201,9 @@ static void call_php(char *name, PARAMDSC *r, int argc, PARAMDSC **argv)
/* create the argument array */
for (i = 0; i < argc; ++i) {
- INIT_ZVAL(args[i]);
- argp[i] = &args[i];
-
/* test arg for null */
if (argv[i]->dsc_flags & DSC_null) {
- ZVAL_NULL(argp[i]);
+ ZVAL_NULL(&args[i]);
continue;
}
@@ -218,32 +214,35 @@ static void call_php(char *name, PARAMDSC *r, int argc, PARAMDSC **argv)
char d[64];
case dtype_cstring:
- ZVAL_STRING(argp[i], (char*)argv[i]->dsc_address,0);
+//???
+ ZVAL_STRING(&args[i], (char*)argv[i]->dsc_address);
break;
case dtype_text:
- ZVAL_STRINGL(argp[i], (char*)argv[i]->dsc_address, argv[i]->dsc_length,0);
+//???
+ ZVAL_STRINGL(&args[i], (char*)argv[i]->dsc_address, argv[i]->dsc_length);
break;
case dtype_varying:
- ZVAL_STRINGL(argp[i], ((PARAMVARY*)argv[i]->dsc_address)->vary_string,
- ((PARAMVARY*)argv[i]->dsc_address)->vary_length,0);
+//???
+ ZVAL_STRINGL(&args[i], ((PARAMVARY*)argv[i]->dsc_address)->vary_string,
+ ((PARAMVARY*)argv[i]->dsc_address)->vary_length);
break;
case dtype_short:
if (argv[i]->dsc_scale == 0) {
- ZVAL_LONG(argp[i], *(short*)argv[i]->dsc_address);
+ ZVAL_LONG(&args[i], *(short*)argv[i]->dsc_address);
} else {
- ZVAL_DOUBLE(argp[i],
+ ZVAL_DOUBLE(&args[i],
((double)*(short*)argv[i]->dsc_address)/scales[-argv[i]->dsc_scale]);
}
break;
case dtype_long:
if (argv[i]->dsc_scale == 0) {
- ZVAL_LONG(argp[i], *(ISC_LONG*)argv[i]->dsc_address);
+ ZVAL_LONG(&args[i], *(ISC_LONG*)argv[i]->dsc_address);
} else {
- ZVAL_DOUBLE(argp[i],
+ ZVAL_DOUBLE(&args[i],
((double)*(ISC_LONG*)argv[i]->dsc_address)/scales[-argv[i]->dsc_scale]);
}
break;
@@ -252,33 +251,33 @@ static void call_php(char *name, PARAMDSC *r, int argc, PARAMDSC **argv)
l = *(ISC_INT64*)argv[i]->dsc_address;
if (argv[i]->dsc_scale == 0 && l <= LONG_MAX && l >= LONG_MIN) {
- ZVAL_LONG(argp[i], (long)l);
+ ZVAL_LONG(&args[i], (long)l);
} else {
- ZVAL_DOUBLE(argp[i], ((double)l)/scales[-argv[i]->dsc_scale]);
+ ZVAL_DOUBLE(&args[i], ((double)l)/scales[-argv[i]->dsc_scale]);
}
break;
case dtype_real:
- ZVAL_DOUBLE(argp[i], *(float*)argv[i]->dsc_address);
+ ZVAL_DOUBLE(&args[i], *(float*)argv[i]->dsc_address);
break;
case dtype_double:
- ZVAL_DOUBLE(argp[i], *(double*)argv[i]->dsc_address);
+ ZVAL_DOUBLE(&args[i], *(double*)argv[i]->dsc_address);
break;
case dtype_sql_date:
isc_decode_sql_date((ISC_DATE*)argv[i]->dsc_address, &t);
- ZVAL_STRINGL(argp[i], d, strftime(d, sizeof(d), INI_STR("ibase.dateformat"), &t),1);
+ ZVAL_STRINGL(&args[i], d, strftime(d, sizeof(d), INI_STR("ibase.dateformat"), &t),1);
break;
case dtype_sql_time:
isc_decode_sql_time((ISC_TIME*)argv[i]->dsc_address, &t);
- ZVAL_STRINGL(argp[i], d, strftime(d, sizeof(d), INI_STR("ibase.timeformat"), &t),1);
+ ZVAL_STRINGL(&args[i], d, strftime(d, sizeof(d), INI_STR("ibase.timeformat"), &t),1);
break;
case dtype_timestamp:
isc_decode_timestamp((ISC_TIMESTAMP*)argv[i]->dsc_address, &t);
- ZVAL_STRINGL(argp[i], d, strftime(d, sizeof(d), INI_STR("ibase.timestampformat"), &t),1);
+ ZVAL_STRINGL(&args[i], d, strftime(d, sizeof(d), INI_STR("ibase.timestampformat"), &t));
break;
}
}
@@ -287,7 +286,7 @@ static void call_php(char *name, PARAMDSC *r, int argc, PARAMDSC **argv)
/* now call the function */
if (FAILURE == call_user_function(EG(function_table), NULL,
- &callback, &return_value, argc, argp TSRMLS_CC)) {
+ &callback, &return_value, argc, args TSRMLS_CC)) {
UNLOCK();
break;
}
@@ -299,11 +298,12 @@ static void call_php(char *name, PARAMDSC *r, int argc, PARAMDSC **argv)
case dtype_sql_date:
case dtype_sql_time:
case dtype_timestamp:
- zval_dtor(argp[i]);
-
+ zval_dtor(&args[i]);
}
}
+ zval_dtor(&callback);
+
/* return whatever type we got back from the callback: let DB handle conversion */
switch (Z_TYPE(return_value)) {