summaryrefslogtreecommitdiff
path: root/upb/encode.c
diff options
context:
space:
mode:
authorJoshua Haberman <jhaberman@gmail.com>2017-07-18 01:04:48 +0200
committerJoshua Haberman <jhaberman@gmail.com>2017-07-18 01:04:48 +0200
commitb697882fb272c2f3408f5c821a88aaf3e3db6f52 (patch)
tree41e355f2505cf62dca7a767c06a28ec358ba1054 /upb/encode.c
parentbe9094d91a2da777002a0f713306ac1bb74a6ac5 (diff)
Fixed varint length when buffer is reallocated.
Diffstat (limited to 'upb/encode.c')
-rw-r--r--upb/encode.c4
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)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback