moonbridge
diff moonbridge_io.c @ 213:43a077f2ab49
Safety catch for noncompliant strerror_r() implementation on GNU/Linux systems
| author | jbe |
|---|---|
| date | Mon Jun 22 22:26:55 2015 +0200 (2015-06-22) |
| parents | 453b7d1a7944 |
| children | 45a425c75643 |
line diff
1.1 --- a/moonbridge_io.c Mon Jun 22 22:19:41 2015 +0200 1.2 +++ b/moonbridge_io.c Mon Jun 22 22:26:55 2015 +0200 1.3 @@ -37,8 +37,9 @@ 1.4 1.5 #define MOONBR_IO_LISTEN_BACKLOG 1024 1.6 1.7 +#define MOONBR_IO_STRERROR_R_MSG "Error detail unavailable due to noncompliant strerror_r() implementation" 1.8 #define moonbr_io_errmsg() \ 1.9 - char errmsg[MOONBR_IO_MAXSTRERRORLEN]; \ 1.10 + char errmsg[MOONBR_IO_MAXSTRERRORLEN] = MOONBR_IO_STRERROR_R_MSG; \ 1.11 strerror_r(errno, errmsg, MOONBR_IO_MAXSTRERRORLEN) 1.12 1.13 #define MOONBR_IO_HANDLE_MT_REGKEY "moonbridge_io_handle" 1.14 @@ -1253,7 +1254,7 @@ 1.15 int i, argc; 1.16 int sockin[2], sockout[2], sockerr[2]; 1.17 volatile int errorcond = 0; 1.18 - volatile char errmsgbuf[MOONBR_IO_MAXSTRERRORLEN]; 1.19 + volatile char errmsgbuf[MOONBR_IO_MAXSTRERRORLEN] = MOONBR_IO_STRERROR_R_MSG; 1.20 moonbr_io_child_t *child; 1.21 argc = lua_gettop(L); 1.22 argv = lua_newuserdata(L, (argc + 1) * sizeof(char *));