char *libpath;
zend_module_entry *module_entry;
zend_module_entry *(*get_module)(void);
- int error_type, slash_suffix;
+ int error_type, slash_suffix = NULL;
char *extension_dir;
+ char *err1, *err2;
if (type == MODULE_PERSISTENT) {
extension_dir = INI_STR("extension_dir");
libpath = estrdup(filename);
} else if (extension_dir && extension_dir[0]) {
int extension_dir_len = (int)strlen(extension_dir);
- char *err1, *err2;
slash_suffix = IS_SLASH(extension_dir[extension_dir_len-1]);
/* Try as filename first */
if (slash_suffix) {
} else {
spprintf(&libpath, 0, "%s%c%s", extension_dir, DEFAULT_SLASH, filename); /* SAFE */
}
+ } else {
+ return FAILURE; /* Not full path given or extension_dir is not set */
+ }
+
+ handle = php_load_shlib(libpath, &err1);
+ if (!handle) {
+ /* Now, consider 'filename' as extension name and build file name */
+ char *orig_libpath = libpath;
+
+ if (slash_suffix) {
+ spprintf(&libpath, 0, "%s" PHP_SHLIB_EXT_PREFIX "%s." PHP_SHLIB_SUFFIX, extension_dir, filename); /* SAFE */
+ } else {
+ spprintf(&libpath, 0, "%s%c" PHP_SHLIB_EXT_PREFIX "%s." PHP_SHLIB_SUFFIX, extension_dir, DEFAULT_SLASH, filename); /* SAFE */
+ }
- handle = php_load_shlib(libpath, &err1);
+ handle = php_load_shlib(libpath, &err2);
if (!handle) {
- /* Now, consider 'filename' as extension name and build file name */
- char *orig_libpath = libpath;
-
- if (slash_suffix) {
- spprintf(&libpath, 0, "%s" PHP_SHLIB_EXT_PREFIX "%s." PHP_SHLIB_SUFFIX, extension_dir, filename); /* SAFE */
- } else {
- spprintf(&libpath, 0, "%s%c" PHP_SHLIB_EXT_PREFIX "%s." PHP_SHLIB_SUFFIX, extension_dir, DEFAULT_SLASH, filename); /* SAFE */
- }
-
- handle = php_load_shlib(libpath, &err2);
- if (!handle) {
- php_error_docref(NULL, error_type, "Unable to load dynamic library '%s' (tried: %s (%s), %s (%s))",
- filename, orig_libpath, err1, libpath, err2);
- efree(orig_libpath);
- efree(err1);
- efree(libpath);
- efree(err2);
- return FAILURE;
- }
+ php_error_docref(NULL, error_type, "Unable to load dynamic library '%s' (tried: %s (%s), %s (%s))",
+ filename, orig_libpath, err1, libpath, err2);
efree(orig_libpath);
efree(err1);
+ efree(libpath);
+ efree(err2);
+ return FAILURE;
}
- } else {
- return FAILURE; /* Not full path given or extension_dir is not set */
+ efree(orig_libpath);
+ efree(err1);
}
efree(libpath);