summaryrefslogtreecommitdiff
path: root/Zend/zend_extensions.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_extensions.c')
-rw-r--r--Zend/zend_extensions.c33
1 files changed, 20 insertions, 13 deletions
diff --git a/Zend/zend_extensions.c b/Zend/zend_extensions.c
index 2509daf318..4d4b1ffe09 100644
--- a/Zend/zend_extensions.c
+++ b/Zend/zend_extensions.c
@@ -18,13 +18,14 @@
*/
#include "zend_extensions.h"
+#include "zend_system_id.h"
ZEND_API zend_llist zend_extensions;
ZEND_API uint32_t zend_extension_flags = 0;
ZEND_API int zend_op_array_extension_handles = 0;
static int last_resource_number;
-int zend_load_extension(const char *path)
+zend_result zend_load_extension(const char *path)
{
#if ZEND_EXTENSIONS_SUPPORT
DL_HANDLE handle;
@@ -40,6 +41,13 @@ int zend_load_extension(const char *path)
#endif
return FAILURE;
}
+#ifdef ZEND_WIN32
+ char *err;
+ if (!php_win32_image_compatible(handle, &err)) {
+ zend_error(E_CORE_WARNING, err);
+ return FAILURE;
+ }
+#endif
return zend_load_extension_handle(handle, path);
#else
fprintf(stderr, "Extensions are not supported on this platform.\n");
@@ -51,7 +59,7 @@ int zend_load_extension(const char *path)
#endif
}
-int zend_load_extension_handle(DL_HANDLE handle, const char *path)
+zend_result zend_load_extension_handle(DL_HANDLE handle, const char *path)
{
#if ZEND_EXTENSIONS_SUPPORT
zend_extension *new_extension;
@@ -126,7 +134,8 @@ int zend_load_extension_handle(DL_HANDLE handle, const char *path)
return FAILURE;
}
- return zend_register_extension(new_extension, handle);
+ zend_register_extension(new_extension, handle);
+ return SUCCESS;
#else
fprintf(stderr, "Extensions are not supported on this platform.\n");
/* See http://support.microsoft.com/kb/190351 */
@@ -138,7 +147,7 @@ int zend_load_extension_handle(DL_HANDLE handle, const char *path)
}
-int zend_register_extension(zend_extension *new_extension, DL_HANDLE handle)
+void zend_register_extension(zend_extension *new_extension, DL_HANDLE handle)
{
#if ZEND_EXTENSIONS_SUPPORT
zend_extension extension;
@@ -167,8 +176,6 @@ int zend_register_extension(zend_extension *new_extension, DL_HANDLE handle)
}
/*fprintf(stderr, "Loaded %s, version %s\n", extension.name, extension.version);*/
#endif
-
- return SUCCESS;
}
@@ -181,6 +188,7 @@ static void zend_extension_shutdown(zend_extension *extension)
#endif
}
+/* int return due to zend linked list API */
static int zend_extension_startup(zend_extension *extension)
{
#if ZEND_EXTENSIONS_SUPPORT
@@ -195,20 +203,18 @@ static int zend_extension_startup(zend_extension *extension)
}
-int zend_startup_extensions_mechanism()
+void zend_startup_extensions_mechanism()
{
/* Startup extensions mechanism */
zend_llist_init(&zend_extensions, sizeof(zend_extension), (void (*)(void *)) zend_extension_dtor, 1);
zend_op_array_extension_handles = 0;
last_resource_number = 0;
- return SUCCESS;
}
-int zend_startup_extensions()
+void zend_startup_extensions()
{
zend_llist_apply_with_del(&zend_extensions, (int (*)(void *)) zend_extension_startup);
- return SUCCESS;
}
@@ -249,18 +255,19 @@ ZEND_API void zend_extension_dispatch_message(int message, void *arg)
}
-ZEND_API int zend_get_resource_handle(zend_extension *extension)
+ZEND_API int zend_get_resource_handle(const char *module_name)
{
if (last_resource_number<ZEND_MAX_RESERVED_RESOURCES) {
- extension->resource_number = last_resource_number;
+ zend_add_system_entropy(module_name, "zend_get_resource_handle", &last_resource_number, sizeof(int));
return last_resource_number++;
} else {
return -1;
}
}
-ZEND_API int zend_get_op_array_extension_handle(void)
+ZEND_API int zend_get_op_array_extension_handle(const char *module_name)
{
+ zend_add_system_entropy(module_name, "zend_get_op_array_extension_handle", &zend_op_array_extension_handles, sizeof(int));
return zend_op_array_extension_handles++;
}