From a8a0bc73b981bd94509c180ad8cac36143c479ec Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Mon, 25 Mar 2019 10:49:07 -0700 Subject: Allow bytes field to be longer than 16000 bytes (#157) --- upb/json/printer.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'upb') diff --git a/upb/json/printer.c b/upb/json/printer.c index 26cc020..72f26b2 100644 --- a/upb/json/printer.c +++ b/upb/json/printer.c @@ -450,9 +450,14 @@ static size_t putbytes(void *closure, const void *handler_data, const char *str, UPB_UNUSED(handler_data); UPB_UNUSED(handle); + print_data(p, "\"", 1); + while (remaining > 2) { - /* TODO(haberman): handle encoded lengths > sizeof(data) */ - UPB_ASSERT((limit - to) >= 4); + if (limit - to < 4) { + bytes = to - data; + putstring(p, data, bytes); + to = data; + } to[0] = base64[from[0] >> 2]; to[1] = base64[((from[0] & 0x3) << 4) | (from[1] >> 4)]; @@ -484,7 +489,6 @@ static size_t putbytes(void *closure, const void *handler_data, const char *str, } bytes = to - data; - print_data(p, "\"", 1); putstring(p, data, bytes); print_data(p, "\"", 1); return len; -- cgit v1.2.3