From 336268b3d7e8860e86171650882d0a4f7d62ecfd Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Wed, 10 Aug 2011 19:46:08 -0700 Subject: Fixed a few memory leaks and Makefile tweaks. --- upb/def.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'upb') diff --git a/upb/def.c b/upb/def.c index 7de247e..6d2930c 100644 --- a/upb/def.c +++ b/upb/def.c @@ -226,6 +226,11 @@ static void upb_fielddef_free(upb_fielddef *f) { if (upb_isstring(f)) { free(upb_value_getptr(f->defaultval)); } + if (f->def) { + // We own a ref on the subdef iff we are not part of a msgdef. + assert((f->msgdef == NULL) == (upb_dyncast_unresolveddef(f->def) != NULL)); + if (f->msgdef == NULL) upb_def_unref(f->def); + } free(f->name); free(f); } @@ -305,6 +310,7 @@ bool upb_fielddef_setnumber(upb_fielddef *f, int32_t number) { bool upb_fielddef_setname(upb_fielddef *f, const char *name) { assert(f->msgdef == NULL); + free(f->name); f->name = strdup(name); return true; } -- cgit v1.2.3