summaryrefslogtreecommitdiff
path: root/upb
diff options
context:
space:
mode:
authorJoshua Haberman <jhaberman@gmail.com>2019-06-03 14:44:52 -0700
committerJoshua Haberman <jhaberman@gmail.com>2019-06-03 14:44:52 -0700
commit56779f09eb993bcde5b7bc1c7de9ad943d6cd5ff (patch)
treef1f4f174e373e825ad62dc91e0f02241dd514ced /upb
parentba0a2fb955450e339f01d58018b34b094115f7cf (diff)
All tests pass again.
Diffstat (limited to 'upb')
-rw-r--r--upb/bindings/lua/upb/pb.c2
-rw-r--r--upb/decode.c10
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;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback