summaryrefslogtreecommitdiff
path: root/src/ldso/dynlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ldso/dynlink.c')
-rw-r--r--src/ldso/dynlink.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c
index e09f0715..2bbd492a 100644
--- a/src/ldso/dynlink.c
+++ b/src/ldso/dynlink.c
@@ -886,7 +886,7 @@ void *__dynlink(int argc, char **argv)
void *dlopen(const char *file, int mode)
{
- struct dso *volatile p, *orig_tail = tail, *next;
+ struct dso *volatile p, *orig_tail, *next;
size_t i;
int cs;
@@ -895,6 +895,8 @@ void *dlopen(const char *file, int mode)
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
pthread_rwlock_wrlock(&lock);
+ orig_tail = tail;
+
if (setjmp(rtld_fail)) {
/* Clean up anything new that was (partially) loaded */
if (p->deps) for (i=0; p->deps[i]; i++)