From 39c9a8bd5a278873e8ca00b0f50e2494a60deb26 Mon Sep 17 00:00:00 2001 From: Josh Haberman Date: Wed, 3 Dec 2014 14:18:28 -0800 Subject: Sync from Google-internal development. Most notably, a JSON parser is now provided. --- upb/symtab.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'upb/symtab.c') diff --git a/upb/symtab.c b/upb/symtab.c index 0269618..2f2b444 100644 --- a/upb/symtab.c +++ b/upb/symtab.c @@ -298,7 +298,12 @@ bool upb_symtab_add(upb_symtab *s, upb_def *const*defs, int n, void *ref_donor, upb_fielddef *f = upb_msg_iter_field(&j); const char *name = upb_fielddef_subdefname(f); if (name && !upb_fielddef_subdef(f)) { + // Try the lookup in the current set of to-be-added defs first. If not + // there, try existing defs. upb_def *subdef = upb_resolvename(&addtab, base, name); + if (subdef == NULL) { + subdef = upb_resolvename(&s->symtab, base, name); + } if (subdef == NULL) { upb_status_seterrf( status, "couldn't resolve name '%s' in message '%s'", name, base); -- cgit v1.2.3