diff options
author | Joshua Haberman <joshua@reverberate.org> | 2009-07-21 17:11:01 -0700 |
---|---|---|
committer | Joshua Haberman <joshua@reverberate.org> | 2009-07-21 17:11:01 -0700 |
commit | 40e8127a246c2ec6bf5a7f981c90c0dbf4e37161 (patch) | |
tree | 786d95e2651cb1ae74c3cb30756efecc3a91582b /src/upb_msg.c | |
parent | d7632d271cfda0d001d4373dd9884d21720d2f36 (diff) |
Abandon setjmp/longjmp, performance was not measurably increased.
Diffstat (limited to 'src/upb_msg.c')
-rw-r--r-- | src/upb_msg.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/upb_msg.c b/src/upb_msg.c index 5d36c01..e7158f9 100644 --- a/src/upb_msg.c +++ b/src/upb_msg.c @@ -276,16 +276,16 @@ static union upb_value_ptr get_value_ptr(void *data, struct upb_msg_field *f) return p; } -static void *value_cb(void *udata, void *buf, void *end, - void *user_field_desc, jmp_buf errjmp) +static upb_status_t value_cb(void *udata, uint8_t *buf, uint8_t *end, + void *user_field_desc, uint8_t **outbuf) { struct upb_msg_parse_state *s = udata; struct upb_msg_field *f = user_field_desc; union upb_value_ptr p = get_value_ptr(s->top->data, f); - void *ret = upb_parse_value(buf, end, f->type, p, errjmp); - google_protobuf_FieldDescriptorProto *fd = upb_msg_field_descriptor(f, s->top->m); + UPB_CHECK(upb_parse_value(buf, end, f->type, p, outbuf)); + //google_protobuf_FieldDescriptorProto *fd = upb_msg_field_descriptor(f, s->top->m); //upb_text_printfield(&s->p, *fd->name, f->type, p, stdout); - return ret; + return UPB_STATUS_OK; } static void str_cb(void *udata, struct upb_string *str, @@ -301,7 +301,7 @@ static void str_cb(void *udata, struct upb_string *str, upb_msg_reuse_str(p.str, str->byte_len); upb_strcpy(*p.str, str); } - google_protobuf_FieldDescriptorProto *fd = upb_msg_field_descriptor(f, s->top->m); + //google_protobuf_FieldDescriptorProto *fd = upb_msg_field_descriptor(f, s->top->m); //upb_text_printfield(&s->p, *fd->name, f->type, p, stdout); } |