cvs: embed /php-irssi ext-irssi.c
[email protected] ("Wez Furlong") Sun, 02 Feb 2003 15:08:53 -0000
| Newsgroups | php.embed.cvs |
|---|---|
| Message-ID | <cvswez1044198533@cvsserver> |
wez Sun Feb 2 10:08:53 2003 EDT
Modified files:
/embed/php-irssi ext-irssi.c
Log:
Fix pointer mess that screwed up args for user-space signal handlers...
Index: embed/php-irssi/ext-irssi.c
diff -u embed/php-irssi/ext-irssi.c:1.11 embed/php-irssi/ext-irssi.c:1.12
--- embed/php-irssi/ext-irssi.c:1.11 Sun Feb 2 09:22:36 2003
+++ embed/php-irssi/ext-irssi.c Sun Feb 2 10:08:53 2003
@@ -14,7 +14,7 @@
+----------------------------------------------------------------------+
| Author: Wez Furlong <[email protected]> |
+----------------------------------------------------------------------+
- $Id: ext-irssi.c,v 1.11 2003/02/02 14:22:36 wez Exp $
+ $Id: ext-irssi.c,v 1.12 2003/02/02 15:08:53 wez Exp $
*/
#include "php-irssi.h"
#include "php-signals-list.h" /* generated by php during make */
@@ -149,7 +149,7 @@
int sigid = signal_get_emitted_id();
struct sig_record *rec = (struct sig_record*)signal_get_user_data();
struct php_irssi_signal_args *sigargs;
- zval **zargs[6];
+ zval ***zargs;
zval *val, *retval = NULL, *func_name = NULL;
int i, call_result;
@@ -164,13 +164,17 @@
func_name = rec->handler;
+ zargs = emalloc(sigargs->argc * sizeof(zval **));
+
for (i = 0; i < sigargs->argc; i++) {
/* TODO: would be nice to replace this with php_irssi_C_to_PHP(),
* but we need to make some assumptions and optimizations here
* for the NICK records */
- MAKE_STD_ZVAL(val);
-
+ zargs[i] = emalloc(sizeof(zval *));
+ MAKE_STD_ZVAL(*zargs[i]);
+ val = *zargs[i];
+
switch(sigargs->argtypes[i]) {
case PIAT_STRING:
ZVAL_STRING(val, (char *)args[i], 1);
@@ -203,7 +207,6 @@
default:
ZVAL_NULL(val);
}
- zargs[i] = &val;
}
call_result = call_user_function_ex(EG(function_table),
@@ -228,7 +231,9 @@
/* release those zvals */
for (i = 0; i < sigargs->argc; i++) {
zval_ptr_dtor(zargs[i]);
+ efree(zargs[i]);
}
+ efree(zargs);
}
/* ---------- Global functions */