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 *));

Impressum / About Us