diff options
author | Joshua Haberman <jhaberman@gmail.com> | 2017-07-18 01:04:48 +0200 |
---|---|---|
committer | Joshua Haberman <jhaberman@gmail.com> | 2017-07-18 01:04:48 +0200 |
commit | b697882fb272c2f3408f5c821a88aaf3e3db6f52 (patch) | |
tree | 41e355f2505cf62dca7a767c06a28ec358ba1054 /upb/encode.c | |
parent | be9094d91a2da777002a0f713306ac1bb74a6ac5 (diff) |
Fixed varint length when buffer is reallocated.
Diffstat (limited to 'upb/encode.c')
-rw-r--r-- | upb/encode.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/upb/encode.c b/upb/encode.c index ced971e..8a220ef 100644 --- a/upb/encode.c +++ b/upb/encode.c @@ -167,12 +167,12 @@ static bool upb_encode_array(upb_encstate *e, const char *field_mem, #define VARINT_CASE(ctype, encode) { \ ctype *start = arr->data; \ ctype *ptr = start + arr->len; \ - char *buf_ptr = e->ptr; \ + size_t pre_len = e->limit - e->ptr; \ do { \ ptr--; \ CHK(upb_put_varint(e, encode)); \ } while (ptr != start); \ - CHK(upb_put_varint(e, buf_ptr - e->ptr)); \ + CHK(upb_put_varint(e, e->limit - e->ptr - pre_len)); \ } \ break; \ do { ; } while(0) |