diff options
Diffstat (limited to '3rdparty/libuv/src/unix/pipe.c')
-rw-r--r-- | 3rdparty/libuv/src/unix/pipe.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/3rdparty/libuv/src/unix/pipe.c b/3rdparty/libuv/src/unix/pipe.c index 7f87a713bf4..d4fdfa9d5a5 100644 --- a/3rdparty/libuv/src/unix/pipe.c +++ b/3rdparty/libuv/src/unix/pipe.c @@ -200,9 +200,6 @@ out: if (err) uv__io_feed(handle->loop, &handle->io_watcher); - /* Mimic the Windows pipe implementation, always - * return 0 and let the callback handle errors. - */ } @@ -234,14 +231,18 @@ static int uv__pipe_getsockpeername(const uv_pipe_t* handle, addrlen = strlen(sa.sun_path); - if (addrlen > *size) { - *size = addrlen; + if (addrlen >= *size) { + *size = addrlen + 1; return UV_ENOBUFS; } memcpy(buffer, sa.sun_path, addrlen); *size = addrlen; + /* only null-terminate if it's not an abstract socket */ + if (buffer[0] != '\0') + buffer[addrlen] = '\0'; + return 0; } |