abies           Fri Aug 15 12:13:52 2003 EDT

  Modified files:              
    /php-src/ext/interbase      interbase.c php_interbase.h 
  Log:
  Added ibase_free_event_handler()
  
  
Index: php-src/ext/interbase/interbase.c
diff -u php-src/ext/interbase/interbase.c:1.142 php-src/ext/interbase/interbase.c:1.143
--- php-src/ext/interbase/interbase.c:1.142     Thu Aug 14 20:16:58 2003
+++ php-src/ext/interbase/interbase.c   Fri Aug 15 12:13:51 2003
@@ -14,10 +14,11 @@
    +----------------------------------------------------------------------+
    | Authors: Jouni Ahto <[EMAIL PROTECTED]>                            |
    |          Andrew Avdeev <[EMAIL PROTECTED]>                              |
+   |          Ard Biesheuvel <[EMAIL PROTECTED]>              |
    +----------------------------------------------------------------------+
  */
 
-/* $Id: interbase.c,v 1.142 2003/08/15 00:16:58 abies Exp $ */
+/* $Id: interbase.c,v 1.143 2003/08/15 16:13:51 abies Exp $ */
 
 /*
        Changes:
@@ -137,6 +138,7 @@
 #endif
        PHP_FE(ibase_wait_event, NULL)
        PHP_FE(ibase_set_event_handler, NULL)
+       PHP_FE(ibase_free_event_handler, NULL)
        {NULL, NULL, NULL}
 };
 
@@ -725,7 +727,7 @@
 
        php_info_print_table_start();
        php_info_print_table_row(2, "Interbase Support", "enabled");
-       php_info_print_table_row(2, "Revision", "$Revision: 1.142 $");
+       php_info_print_table_row(2, "Revision", "$Revision: 1.143 $");
 #ifdef COMPILE_DL_INTERBASE
        php_info_print_table_row(2, "Dynamic Module", "Yes");
 #endif
@@ -3965,16 +3967,13 @@
                        }
                }       
 
-               Z_TYPE(return_value) = IS_BOOL;
-               Z_BVAL(return_value) = 1;
-
                /* call the callback provided by the user */
                if (SUCCESS != call_user_function(EG(function_table), NULL, 
event->callback, &return_value, 2, args TSRMLS_CC)) {
                        _php_ibase_module_error("Error calling callback %s", 
Z_STRVAL_P(event->callback));
                        return 0;
                }
 
-               if (! Z_BVAL(return_value)) {
+               if (Z_TYPE(return_value) == IS_BOOL && !Z_BVAL(return_value)) {
                        return 0;
                }                       
        }
@@ -4042,7 +4041,7 @@
        }                               
                
        /* get the callback */
-       if (!zend_is_callable(*args[i-1], 0, &callback_name)) {
+       if (!zend_is_callable(*cb_arg, 0, &callback_name)) {
                _php_ibase_module_error("Callback argument %s is not a callable 
function", callback_name);
                efree(callback_name);
                efree(args);
@@ -4088,7 +4087,24 @@
        ZEND_REGISTER_RESOURCE(return_value, event, le_event);
        zend_list_addref(Z_LVAL_P(return_value));
 }
-   
+
+/* {{{ proto bool ibase_free_vevent_handler(resource event)
+   Frees the event handler set by ibase_set_event_handler() */
+PHP_FUNCTION(ibase_free_event_handler)
+{
+       zval **event_arg;
+       ibase_event *event;
+       
+       RESET_ERRMSG;
+       
+       if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &event_arg) == FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+
+       ZEND_FETCH_RESOURCE(event, ibase_event *, event_arg, -1, "Interbase event", 
le_event);
+       zend_list_delete(Z_LVAL_PP(event_arg));
+       RETURN_TRUE;
+}      
 /* }}} */
   
 #endif /* HAVE_IBASE */
Index: php-src/ext/interbase/php_interbase.h
diff -u php-src/ext/interbase/php_interbase.h:1.49 
php-src/ext/interbase/php_interbase.h:1.50
--- php-src/ext/interbase/php_interbase.h:1.49  Thu Aug 14 20:06:07 2003
+++ php-src/ext/interbase/php_interbase.h       Fri Aug 15 12:13:51 2003
@@ -14,10 +14,11 @@
    +----------------------------------------------------------------------+
    | Authors: Jouni Ahto <[EMAIL PROTECTED]>                            |
    |          Andrew Avdeev <[EMAIL PROTECTED]>                           |
+   |          Ard Biesheuvel <[EMAIL PROTECTED]>              |
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_interbase.h,v 1.49 2003/08/15 00:06:07 abies Exp $ */
+/* $Id: php_interbase.h,v 1.50 2003/08/15 16:13:51 abies Exp $ */
 
 #ifndef PHP_INTERBASE_H
 #define PHP_INTERBASE_H
@@ -92,6 +93,7 @@
 
 PHP_FUNCTION(ibase_wait_event);
 PHP_FUNCTION(ibase_set_event_handler);
+PHP_FUNCTION(ibase_free_event_handler);
 
 #define IBASE_MSGSIZE 256
 #define MAX_ERRMSG (IBASE_MSGSIZE*2)



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to