From 6a59b15fba1085432c4c18952680e14d80dd134a Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Tue, 25 Feb 2020 21:04:19 -0800 Subject: fixes #1201 Unexpected error return code: NNG_ENOMEM --- src/nng.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/nng.c b/src/nng.c index 944d43fc..dd82bcee 100644 --- a/src/nng.c +++ b/src/nng.c @@ -105,14 +105,19 @@ nng_recv(nng_socket s, void *buf, size_t *szp, int flags) // better use nng_recvmsg() instead. void *nbuf; - if ((nbuf = nni_alloc(nng_msg_len(msg))) == NULL) { - nng_msg_free(msg); - return (NNG_ENOMEM); + if (nng_msg_len(msg) != 0) { + if ((nbuf = nni_alloc(nng_msg_len(msg))) == NULL) { + nng_msg_free(msg); + return (NNG_ENOMEM); + } + + *(void **) buf = nbuf; + memcpy(nbuf, nni_msg_body(msg), nni_msg_len(msg)); + *szp = nng_msg_len(msg); + } else { + *(void **)buf = NULL; + *szp = 0; } - - *(void **) buf = nbuf; - memcpy(nbuf, nni_msg_body(msg), nni_msg_len(msg)); - *szp = nng_msg_len(msg); } nni_msg_free(msg); return (0); -- cgit v1.2.3-70-g09d2