diff options
author | Alexander Kabaev <kan@FreeBSD.org> | 2005-12-22 16:42:38 +0000 |
---|---|---|
committer | Alexander Kabaev <kan@FreeBSD.org> | 2005-12-22 16:42:38 +0000 |
commit | f6e5db226ff68cde2d5f9b5a0cd5b93070828d19 (patch) | |
tree | b57026149740e433b9ca367ee38817936b3c09f4 /libexec | |
parent | be7ccc4ba33eaffea3b6c9f16a5ee238453484d8 (diff) | |
download | src-f6e5db226ff68cde2d5f9b5a0cd5b93070828d19.tar.gz src-f6e5db226ff68cde2d5f9b5a0cd5b93070828d19.zip |
Initialize object dagmembers list before checking version dependencies.
Notes
Notes:
svn path=/head/; revision=153648
Diffstat (limited to 'libexec')
-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 e3790046cc2a..01ea4f664699 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) |