diff --git a/src/client/sock.c b/src/client/sock.c
index bed6fc0ff0b6d20aff605f4f0a1c4b466435b3e8..0d734f3a9462ba74bb7405beb94c9fdeecb67d8a 100644 (file)
--- a/src/client/sock.c
+++ b/src/client/sock.c
if (rstatus == UINT32_MAX) {
const char *str = sdb_strbuf_string(buf) + data_offset;
size_t len = sdb_strbuf_len(buf) - data_offset;
+ ssize_t n;
/* retrieve status and data len */
assert(len >= 2 * sizeof(uint32_t));
- rstatus = sdb_proto_unmarshal_int32(str, len);
- rlen = sdb_proto_unmarshal_int32(str + sizeof(rstatus),
- len - sizeof(rstatus));
+ n = sdb_proto_unmarshal_int32(str, len, &rstatus);
+ str += n; len -= (size_t)n;
+ sdb_proto_unmarshal_int32(str, len, &rlen);
if (! rlen)
break;