about summary refs log tree commit diff
path: root/src/internal
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2015-04-18 18:00:22 -0400
committerRich Felker <dalias@aerifal.cx>2015-04-18 18:00:22 -0400
commit01d42747118522b7a486ece1736b93c6d5751344 (patch)
treee4f10b65d8335fcfc5f6c43a5e4a761619a47612 /src/internal
parentfa80787698536ecd8b9028703a3bc2e3f59e3d65 (diff)
downloadmusl-01d42747118522b7a486ece1736b93c6d5751344.tar.gz
musl-01d42747118522b7a486ece1736b93c6d5751344.tar.xz
musl-01d42747118522b7a486ece1736b93c6d5751344.zip
make dlerror state and message thread-local and dynamically-allocated
this fixes truncation of error messages containing long pathnames or
symbol names.

the dlerror state was previously required by POSIX to be global. the
resolution of bug 97 relaxed the requirements to allow thread-safe
implementations of dlerror with thread-local state and message buffer.
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/pthread_impl.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/internal/pthread_impl.h b/src/internal/pthread_impl.h
index a0226a63..56877b3a 100644
--- a/src/internal/pthread_impl.h
+++ b/src/internal/pthread_impl.h
@@ -44,6 +44,8 @@ struct pthread {
 	volatile int exitlock[2];
 	volatile int startlock[2];
 	unsigned long sigmask[_NSIG/8/sizeof(long)];
+	char *dlerror_buf;
+	int dlerror_flag;
 	void *stdio_locks;
 	void **dtv_copy;
 };