diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/message.c | 29 | ||||
| -rw-r--r-- | src/core/message.h | 6 |
2 files changed, 24 insertions, 11 deletions
diff --git a/src/core/message.c b/src/core/message.c index 351858a4..4c666955 100644 --- a/src/core/message.c +++ b/src/core/message.c @@ -185,8 +185,11 @@ nni_chunk_trim(nni_chunk *ch, size_t len) if (ch->ch_len < len) { return (NNG_EINVAL); } - ch->ch_ptr += len; ch->ch_len -= len; + // Don't advance the pointer if we are just removing the whole content + if (ch->ch_len != 0) { + ch->ch_ptr += len; + } return (0); } @@ -442,25 +445,33 @@ nni_msg_realloc(nni_msg *m, size_t sz) void * -nni_msg_header(nni_msg *m, size_t *szp) +nni_msg_header(nni_msg *m) { - if (szp != NULL) { - *szp = m->m_header.ch_len; - } return (m->m_header.ch_ptr); } +size_t +nni_msg_header_len(nni_msg *m) +{ + return (m->m_header.ch_len); +} + + void * -nni_msg_body(nni_msg *m, size_t *szp) +nni_msg_body(nni_msg *m) { - if (szp != NULL) { - *szp = m->m_body.ch_len; - } return (m->m_body.ch_ptr); } +size_t +nni_msg_len(nni_msg *m) +{ + return (m->m_body.ch_len); +} + + int nni_msg_append(nni_msg *m, const void *data, size_t len) { diff --git a/src/core/message.h b/src/core/message.h index 0f9a24ac..057c7539 100644 --- a/src/core/message.h +++ b/src/core/message.h @@ -16,8 +16,10 @@ extern int nni_msg_alloc(nni_msg **, size_t); extern void nni_msg_free(nni_msg *); extern int nni_msg_realloc(nni_msg *, size_t); extern int nni_msg_dup(nni_msg **, const nni_msg *); -extern void *nni_msg_header(nni_msg *, size_t *); -extern void *nni_msg_body(nni_msg *, size_t *); +extern void *nni_msg_header(nni_msg *); +extern size_t nni_msg_header_len(nni_msg *); +extern void *nni_msg_body(nni_msg *); +extern size_t nni_msg_len(nni_msg *); extern int nni_msg_append(nni_msg *, const void *, size_t); extern int nni_msg_prepend(nni_msg *, const void *, size_t); extern int nni_msg_append_header(nni_msg *, const void *, size_t); |
