Update dln.c to fix error output from `dln_open()`

`libruby_name` gets trashed by `dlclose(handle)`, so output the
"linked to incompatible ... " error before calling `dlclose(handle)`.
This commit is contained in:
drew-wells 2023-03-21 10:10:19 +00:00 коммит произвёл GitHub
Родитель 6eac424e5e
Коммит 9aaf2b7526
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 6 добавлений и 0 удалений

6
dln.c
Просмотреть файл

@ -392,6 +392,12 @@ dln_open(const char *file)
dln_fatalerror("%s - %s", incompatible, file);
}
else {
if (libruby_name) {
const size_t len = strlen(libruby_name);
char *const tmp = ALLOCA_N(char, len + 1);
if (tmp) memcpy(tmp, libruby_name, len + 1);
libruby_name = tmp;
}
dlclose(handle);
if (libruby_name) {
dln_loaderror("linked to incompatible %s - %s", libruby_name, file);