X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Ftypes%2Fdecl_file.c;fp=src%2Ftypes%2Fdecl_file.c;h=e9366b79789766ceb4142d113436392bd8418307;hp=3e0fff77b37e59ba609ce996ce1e76a44267983a;hb=4bf8ff5e477da2fa4f82518bb947055c2c0374d6;hpb=93d6b7f962a82b725d1918684297d68221b0b733 diff --git a/src/types/decl_file.c b/src/types/decl_file.c index 3e0fff7..e9366b7 100644 --- a/src/types/decl_file.c +++ b/src/types/decl_file.c @@ -45,7 +45,7 @@ void psi_decl_file_dtor(struct psi_decl_file *file) memset(file, 0, sizeof(*file)); } -static inline bool validate_lib(struct psi_data *dst, const char *libname, void **dlopened) +static inline bool validate_lib(struct psi_data *dst, const zend_string *libname, void **dlopened) { char lib[PATH_MAX]; size_t len = PATH_MAX; @@ -55,15 +55,15 @@ static inline bool validate_lib(struct psi_data *dst, const char *libname, void return true; } - if (PATH_MAX == psi_dlname(&lib, &len, libname)) { + if (PATH_MAX == psi_dlname(&lib, &len, libname->val)) { dst->error(dst, NULL, PSI_WARNING, "Library name too long: '%s'", - libname); + libname->val); return false; } if (!(*dlopened = psi_dlopen(lib))) { dst->error(dst, NULL, PSI_WARNING, "Could not open library '%s': %s", - libname, psi_dlerror()); + libname->val, psi_dlerror()); return false; } @@ -73,7 +73,7 @@ static inline bool validate_lib(struct psi_data *dst, const char *libname, void bool psi_decl_file_validate(struct psi_data *dst, struct psi_data *src) { size_t i = 0; - char *libname; + zend_string *libname; void *dlopened; while (psi_plist_get(src->file.libnames, i++, &libname)) { @@ -94,11 +94,13 @@ bool psi_decl_file_validate(struct psi_data *dst, struct psi_data *src) void psi_libs_free(void **dlopened) { if (*dlopened) { psi_dlclose(*dlopened); + *dlopened = NULL; } } -void psi_names_free(char **name) { +void psi_names_free(zend_string **name) { if (*name) { - free(*name); + zend_string_release(*name); + *name = NULL; } }