diff options
author | kan <kan@FreeBSD.org> | 2005-12-22 16:42:38 +0000 |
---|---|---|
committer | kan <kan@FreeBSD.org> | 2005-12-22 16:42:38 +0000 |
commit | 0abef7d070e779458b3f4dced61eb7c56f9dffab (patch) | |
tree | b57026149740e433b9ca367ee38817936b3c09f4 /libexec/rtld-elf | |
parent | d4cd89f6af50e921c62622f69aafbc3ab904e5f6 (diff) | |
download | FreeBSD-src-0abef7d070e779458b3f4dced61eb7c56f9dffab.zip FreeBSD-src-0abef7d070e779458b3f4dced61eb7c56f9dffab.tar.gz |
Initialize object dagmembers list before checking version dependencies.
Diffstat (limited to 'libexec/rtld-elf')
-rw-r--r-- | libexec/rtld-elf/rtld.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c index e379004..01ea4f6 100644 --- a/libexec/rtld-elf/rtld.c +++ b/libexec/rtld-elf/rtld.c @@ -1762,16 +1762,14 @@ dlopen(const char *name, int mode) mode &= RTLD_MODEMASK; if (*old_obj_tail != NULL) { /* We loaded something new. */ assert(*old_obj_tail == obj); - result = load_needed_objects(obj); + init_dag(obj); if (result != -1) result = rtld_verify_versions(&obj->dagmembers); if (result != -1 && ld_tracing) goto trace; - if (result == -1 || - (init_dag(obj), relocate_objects(obj, mode == RTLD_NOW, - &obj_rtld)) == -1) { + (relocate_objects(obj, mode == RTLD_NOW, &obj_rtld)) == -1) { obj->dl_refcount--; unref_dag(obj); if (obj->refcount == 0) |