diff options
Diffstat (limited to 'dev-perl/SpeedyCGI/files/SpeedyCGI-2.22-strerror.patch')
-rw-r--r-- | dev-perl/SpeedyCGI/files/SpeedyCGI-2.22-strerror.patch | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/dev-perl/SpeedyCGI/files/SpeedyCGI-2.22-strerror.patch b/dev-perl/SpeedyCGI/files/SpeedyCGI-2.22-strerror.patch deleted file mode 100644 index 608ac39c566e..000000000000 --- a/dev-perl/SpeedyCGI/files/SpeedyCGI-2.22-strerror.patch +++ /dev/null @@ -1,47 +0,0 @@ -Author: Niko Tyni <ntyni@iki.fi> -Description: Don't crash while printing a fatal error. ---- a/src/speedy_util.c -+++ b/src/speedy_util.c -@@ -96,13 +96,42 @@ - } - - static void just_die(const char *fmt, va_list ap) { -+ /* -+ * All this strerror_r() stuff is here because -+ * including perl.h in some cases (Perl 5.8?) replaces -+ * strerr() with a wrapper that needs an embedded perl -+ * interpreter running. Otherwise we get SIGSEGV when -+ * accessing interpreter-specific global variables for the -+ * strerror buffer -+ * -+ * Furthermore, there are two implementations of -+ * strerror_r() out there, with different prototypes. -+ */ -+ - char buf[2048]; -+#ifdef HAS_STRERROR_R -+ char errbuf[256]; -+ int errsv; -+#endif - - sprintf(buf, "%s[%u]: ", SPEEDY_PROGNAME, (int)getpid()); - vsprintf(buf + strlen(buf), fmt, ap); - if (errno) { - strcat(buf, ": "); -+#ifdef HAS_STRERROR_R -+#ifdef _GNU_SOURCE -+ strcat(buf, strerror_r(errno, errbuf, sizeof(errbuf))); -+#else /* ! _GNU_SOURCE */ -+ errsv = errno; -+ if (strerror_r(errsv, errbuf, sizeof(errbuf)) -+ sprintf(buf + strlen(buf), "(errno = %d)", errsv); -+ else -+ strcat(buf, errbuf); -+ } -+#endif -+#else /* ! HAS_STRERROR_R */ - strcat(buf, strerror(errno)); -+#endif /* HAS_STRERROR_R */ - } - strcat(buf, "\n"); - # ifdef SPEEDY_DEBUG |