summaryrefslogtreecommitdiff
path: root/src/upb_data.c
diff options
context:
space:
mode:
authorJoshua Haberman <joshua@reverberate.org>2010-01-19 12:35:22 -0800
committerJoshua Haberman <joshua@reverberate.org>2010-01-19 12:35:22 -0800
commit87de804b63422c9f54ded58cc56ca9df38d162d6 (patch)
treea4a364d77a7d91dcb92e919b6c802874251bb486 /src/upb_data.c
parentdda1499a0eab41165c82277e630dd7050145448f (diff)
Make sources responsible for respecting UPB_MAX_NESTING.
Diffstat (limited to 'src/upb_data.c')
-rw-r--r--src/upb_data.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/src/upb_data.c b/src/upb_data.c
index d5a631d..3b4f7ab 100644
--- a/src/upb_data.c
+++ b/src/upb_data.c
@@ -366,7 +366,7 @@ typedef struct {
struct upb_msgsink {
upb_sink base;
upb_msgdef *toplevel_msgdef;
- upb_msgsink_frame stack[UPB_MAX_NESTING], *top, *limit;
+ upb_msgsink_frame stack[UPB_MAX_NESTING], *top;
};
/* Helper function that returns a pointer to where the next value for field "f"
@@ -432,16 +432,11 @@ static upb_sink_status _upb_msgsink_strcb(upb_sink *s, upb_fielddef *f,
static upb_sink_status _upb_msgsink_startcb(upb_sink *s, upb_fielddef *f,
upb_status *status)
{
+ (void)status; // No detectable errors can occur.
upb_msgsink *ms = (upb_msgsink*)s;
upb_msg *oldmsg = ms->top->msg;
upb_valueptr p = get_valueptr(oldmsg, f);
ms->top++;
- if(ms->top == ms->limit) {
- upb_seterr(status, UPB_ERROR_MAX_NESTING_EXCEEDED,
- "Nesting exceeded maximum (%d levels)\n",
- UPB_MAX_NESTING);
- return UPB_SINK_STOP;
- }
if(upb_isarray(f) || !upb_msg_has(oldmsg, f)) {
upb_msgdef *md = upb_downcast_msgdef(f->def);
@@ -500,7 +495,6 @@ upb_sink *upb_msgsink_sink(upb_msgsink *sink)
void upb_msgsink_reset(upb_msgsink *ms, upb_msg *msg)
{
ms->top = ms->stack;
- ms->limit = ms->stack + UPB_MAX_NESTING;
ms->top->msg = msg;
ms->top->md = ms->toplevel_msgdef;
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback