1 --- strsignal.c.orig 2010-01-24 02:35:26.000000000 -0800
2 +++ strsignal.c 2010-05-06 12:29:53.000000000 -0700
3 @@ -47,8 +47,6 @@ __FBSDID("$FreeBSD: src/lib/libc/string/
5 #define UPREFIX "Unknown signal"
7 -static char sig_ebuf[NL_TEXTMAX];
8 -static char sig_ebuf_err[NL_TEXTMAX];
9 static once_t sig_init_once = ONCE_INITIALIZER;
10 static thread_key_t sig_key;
11 static int sig_keycreated = 0;
12 @@ -64,25 +62,19 @@ sig_tlsalloc(void)
16 - if (thr_main() != 0)
19 - if (thr_once(&sig_init_once, sig_keycreate) != 0 ||
21 + if (thr_once(&sig_init_once, sig_keycreate) != 0 ||
24 + if ((ebuf = thr_getspecific(sig_key)) == NULL) {
25 + if ((ebuf = malloc(NL_TEXTMAX * sizeof(char))) == NULL)
27 + if (thr_setspecific(sig_key, ebuf) != 0) {
31 - if ((ebuf = thr_getspecific(sig_key)) == NULL) {
32 - if ((ebuf = malloc(sizeof(sig_ebuf))) == NULL)
34 - if (thr_setspecific(sig_key, ebuf) != 0) {
43 - ebuf = sig_ebuf_err;
47 @@ -103,15 +95,19 @@ strsignal(int num)
50 ebuf = sig_tlsalloc();
56 - if (num > 0 && num < sys_nsig) {
57 + if (num > 0 && num < NSIG) {
60 catgets(catd, 2, num, sys_siglist[num]),
65 + NL_TEXTMAX * sizeof(char));
69 @@ -119,7 +115,7 @@ strsignal(int num)
74 + NL_TEXTMAX * sizeof(char));