diff options
author | Joshua Haberman <jhaberman@gmail.com> | 2019-06-03 14:44:52 -0700 |
---|---|---|
committer | Joshua Haberman <jhaberman@gmail.com> | 2019-06-03 14:44:52 -0700 |
commit | 56779f09eb993bcde5b7bc1c7de9ad943d6cd5ff (patch) | |
tree | f1f4f174e373e825ad62dc91e0f02241dd514ced /upb | |
parent | ba0a2fb955450e339f01d58018b34b094115f7cf (diff) |
All tests pass again.
Diffstat (limited to 'upb')
-rw-r--r-- | upb/bindings/lua/upb/pb.c | 2 | ||||
-rw-r--r-- | upb/decode.c | 10 |
2 files changed, 7 insertions, 5 deletions
diff --git a/upb/bindings/lua/upb/pb.c b/upb/bindings/lua/upb/pb.c index b02fa3e..266bd97 100644 --- a/upb/bindings/lua/upb/pb.c +++ b/upb/bindings/lua/upb/pb.c @@ -17,7 +17,7 @@ static int lupb_pb_decode(lua_State *L) { upb_msg *msg = lupb_msg_checkmsg2(L, 1, &layout); const char *pb = lua_tolstring(L, 2, &len); - upb_decode(pb, len, msg, layout); + upb_decode(pb, len, msg, layout, lupb_arena_get(L)); /* TODO(haberman): check for error. */ return 0; diff --git a/upb/decode.c b/upb/decode.c index 5719d12..eb3306f 100644 --- a/upb/decode.c +++ b/upb/decode.c @@ -150,14 +150,14 @@ static bool upb_skip_unknownfielddata(upb_decstate *d, uint32_t tag, } case UPB_WIRE_TYPE_DELIMITED: { int len; - return upb_decode_string(&d->ptr, d->limit, &len); + CHK(upb_decode_string(&d->ptr, d->limit, &len)); d->ptr += len; + return true; } case UPB_WIRE_TYPE_START_GROUP: return upb_skip_unknowngroup(d, tag >> 3); case UPB_WIRE_TYPE_END_GROUP: - CHK((tag >> 3) == group_fieldnum); - return true; + return (tag >> 3) == group_fieldnum; } return false; } @@ -479,7 +479,7 @@ static bool upb_decode_toarray(upb_decstate *d, upb_decframe *frame, const upb_msglayout *subm; upb_msg *submsg = upb_addmsg(frame, field, &subm); CHK(submsg); - return upb_decode_message(d, submsg, subm); + return upb_decode_msgfield(d, submsg, subm, len); } case UPB_DESCRIPTOR_TYPE_GROUP: return upb_append_unknown(d, frame); @@ -599,6 +599,8 @@ bool upb_decode(const char *buf, size_t size, void *msg, const upb_msglayout *l, state.ptr = buf; state.limit = buf + size; state.arena = arena; + state.depth = 64; + state.parse_status = 0; CHK(upb_decode_message(&state, msg, l)); return state.parse_status == 0; |