]> granicus.if.org Git - php/commitdiff
Added ability to check build_id by extension
authorDmitry Stogov <dmitry@php.net>
Wed, 8 Apr 2009 12:19:01 +0000 (12:19 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 8 Apr 2009 12:19:01 +0000 (12:19 +0000)
Zend/zend_extensions.c
Zend/zend_extensions.h

index d0a0087c1abd2c429a2ff2fd7b45cba967654c92..f4b5b6d8bf9f82da0a8dfe9a157a53089581bc7f 100644 (file)
@@ -79,7 +79,8 @@ int zend_load_extension(const char *path)
                        DL_UNLOAD(handle);
                        return FAILURE;
                }
-       } else if (strcmp(ZEND_EXTENSION_BUILD_ID, extension_version_info->build_id)) {
+       } else if (strcmp(ZEND_EXTENSION_BUILD_ID, extension_version_info->build_id) &&
+                  (!new_extension->build_id_check || new_extension->build_id_check(ZEND_EXTENSION_BUILD_ID) != SUCCESS)) {
                fprintf(stderr, "Cannot load %s - it was build with configuration %s, whereas running engine is %s\n",
                                        new_extension->name, extension_version_info->build_id, ZEND_EXTENSION_BUILD_ID);
                DL_UNLOAD(handle);
index f1a7af23585a91ba239ab9018fdea981b4d06990..5d84647bd413c3589475b9d457778f2ef0f7d225 100644 (file)
@@ -80,7 +80,7 @@ struct _zend_extension {
        op_array_dtor_func_t op_array_dtor;
 
        int (*api_no_check)(int api_no);
-       void *reserved2;
+       int (*build_id_check)(const char* build_id);
        void *reserved3;
        void *reserved4;
        void *reserved5;