diff options
| -rw-r--r-- | src/ldso/dynlink.c | 4 | 
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++) | 
