summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_extensions.c19
-rw-r--r--Zend/zend_extensions.h1
2 files changed, 17 insertions, 3 deletions
diff --git a/Zend/zend_extensions.c b/Zend/zend_extensions.c
index ceda2a3e8d..e556eb07bc 100644
--- a/Zend/zend_extensions.c
+++ b/Zend/zend_extensions.c
@@ -29,8 +29,6 @@ int zend_load_extension(const char *path)
{
#if ZEND_EXTENSIONS_SUPPORT
DL_HANDLE handle;
- zend_extension *new_extension;
- zend_extension_version_info *extension_version_info;
handle = DL_LOAD(path);
if (!handle) {
@@ -43,6 +41,22 @@ int zend_load_extension(const char *path)
#endif
return FAILURE;
}
+ return zend_load_extension_handle(handle, path);
+#else
+ fprintf(stderr, "Extensions are not supported on this platform.\n");
+/* See http://support.microsoft.com/kb/190351 */
+#ifdef ZEND_WIN32
+ fflush(stderr);
+#endif
+ return FAILURE;
+#endif
+}
+
+int zend_load_extension_handle(DL_HANDLE handle, const char *path)
+{
+#if ZEND_EXTENSIONS_SUPPORT
+ zend_extension *new_extension;
+ zend_extension_version_info *extension_version_info;
extension_version_info = (zend_extension_version_info *) DL_FETCH_SYMBOL(handle, "extension_version_info");
if (!extension_version_info) {
@@ -62,7 +76,6 @@ int zend_load_extension(const char *path)
return FAILURE;
}
-
/* allow extension to proclaim compatibility with any Zend version */
if (extension_version_info->zend_extension_api_no != ZEND_EXTENSION_API_NO &&(!new_extension->api_no_check || new_extension->api_no_check(ZEND_EXTENSION_API_NO) != SUCCESS)) {
if (extension_version_info->zend_extension_api_no > ZEND_EXTENSION_API_NO) {
diff --git a/Zend/zend_extensions.h b/Zend/zend_extensions.h
index caeb3a263b..ee9912c73f 100644
--- a/Zend/zend_extensions.h
+++ b/Zend/zend_extensions.h
@@ -145,6 +145,7 @@ void zend_shutdown_extensions(void);
BEGIN_EXTERN_C()
ZEND_API int zend_load_extension(const char *path);
+ZEND_API int zend_load_extension_handle(DL_HANDLE handle, const char *path);
ZEND_API int zend_register_extension(zend_extension *new_extension, DL_HANDLE handle);
ZEND_API zend_extension *zend_get_extension(const char *extension_name);
ZEND_API size_t zend_extensions_op_array_persist_calc(zend_op_array *op_array);