summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/main.c1
-rw-r--r--main/php_ticks.c20
-rw-r--r--main/php_ticks.h9
3 files changed, 13 insertions, 17 deletions
diff --git a/main/main.c b/main/main.c
index 4d0e8e7257..d62eb8db6a 100644
--- a/main/main.c
+++ b/main/main.c
@@ -757,7 +757,6 @@ int php_global_shutdown_extensions(zend_module_entry **ptr, int count)
return SUCCESS;
}
-
int php_module_startup(sapi_module_struct *sf)
{
zend_utility_functions zuf;
diff --git a/main/php_ticks.c b/main/php_ticks.c
index c93200c9ad..e56f0af915 100644
--- a/main/php_ticks.c
+++ b/main/php_ticks.c
@@ -23,7 +23,7 @@
int php_startup_ticks(PLS_D)
{
- zend_llist_init(&PG(tick_functions), sizeof(PG(tick_functions)), NULL, 1);
+ zend_llist_init(&PG(tick_functions), sizeof(void(*)(int)), NULL, 1);
return SUCCESS;
}
@@ -34,31 +34,33 @@ void php_shutdown_ticks(PLS_D)
static int php_compare_tick_functions(void *elem1, void *elem2)
{
- return ((void (*)(int))elem1 == (void (*)(int))elem2);
+ void(*func1)(int);
+ void(*func2)(int);
+ memcpy(&func1, elem1, sizeof(void(*)(int)));
+ memcpy(&func2, elem2, sizeof(void(*)(int)));
+ return (func1 == func2);
}
-PHPAPI int php_add_tick_function(void (*func)(int))
+PHPAPI void php_add_tick_function(void (*func)(int))
{
PLS_FETCH();
- zend_llist_add_element(&PG(tick_functions), func);
-
- return SUCCESS;
+ zend_llist_add_element(&PG(tick_functions), (void *)&func);
}
-PHPAPI int php_remove_tick_function(void (*func)(int))
+PHPAPI void php_remove_tick_function(void (*func)(int))
{
PLS_FETCH();
zend_llist_del_element(&PG(tick_functions), func,
(int(*)(void*,void*))php_compare_tick_functions);
- return SUCCESS;
}
static void php_tick_iterator(void *data, void *arg)
{
void (*func)(int);
- func = (void(*)(int))data;
+
+ memcpy(&func, data, sizeof(void(*)(int)));
func(*((int *)arg));
}
diff --git a/main/php_ticks.h b/main/php_ticks.h
index 078ca3aae2..1ca4617424 100644
--- a/main/php_ticks.h
+++ b/main/php_ticks.h
@@ -21,16 +21,11 @@
#ifndef PHP_TICKS_H
#define PHP_TICKS_H
-struct _php_tick_function_entry {
- void (*func)(int count);
- struct _php_tick_function_entry *next;
-};
-
int php_startup_ticks(PLS_D);
void php_shutdown_ticks(PLS_D);
void php_run_ticks(int count);
-PHPAPI int php_add_tick_function(void (*func)(int count));
-PHPAPI int php_remove_tick_function(void (*func)(int count));
+PHPAPI void php_add_tick_function(void (*func)(int));
+PHPAPI void php_remove_tick_function(void (*func)(int));
#endif