diff options
| author | Lawrence Kesteloot <lk@teamten.com> | 2018-09-14 21:51:54 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-09-15 13:30:05 -0700 |
| commit | 7afc254cd4dd72f125968f1331a48031f65b02fa (patch) | |
| tree | b83f7ef5d65b5f6f15c02de0f8f8b12b6fb1123d /src | |
| parent | 0863d12e2b5173efeb074cbc9fa05f26274f126b (diff) | |
| download | nng-7afc254cd4dd72f125968f1331a48031f65b02fa.tar.gz nng-7afc254cd4dd72f125968f1331a48031f65b02fa.tar.bz2 nng-7afc254cd4dd72f125968f1331a48031f65b02fa.zip | |
Only free in nng_send() if we succeed.
Both the man page and the comment (in nng.h) of nng_send()
say that the buffer is freed only if the function succeeds.
The previous code always freed (if the flag was set). This
change only frees if we succeed.
Diffstat (limited to 'src')
| -rw-r--r-- | src/nng.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -158,10 +158,12 @@ nng_send(nng_socket s, void *buf, size_t len, int flags) } memcpy(nng_msg_body(msg), buf, len); if ((rv = nng_sendmsg(s, msg, flags)) != 0) { + // If nng_sendmsg() succeeded, then it took ownership. nng_msg_free(msg); - } - if (flags & NNG_FLAG_ALLOC) { - nni_free(buf, len); + } else { + if (flags & NNG_FLAG_ALLOC) { + nni_free(buf, len); + } } return (rv); } |
