From: Matthew Fernandez Date: Fri, 23 Dec 2022 21:37:04 +0000 (-0800) Subject: gxl2gv: remove unnecessary dynamic allocation of user data X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=912f6eef48af4e7584791c98d2c52b7b594a45e7;p=graphviz gxl2gv: remove unnecessary dynamic allocation of user data --- diff --git a/cmd/tools/gxl2gv.c b/cmd/tools/gxl2gv.c index fb7a64009..c979b61d5 100644 --- a/cmd/tools/gxl2gv.c +++ b/cmd/tools/gxl2gv.c @@ -148,29 +148,24 @@ static Dtdisc_t nameDisc = { .freef = (Dtfree_f)free_nitem, }; -static userdata_t *genUserdata(void) -{ - userdata_t *user = calloc(1, sizeof(userdata_t)); - if (user == NULL) - return NULL; - user->listen = FALSE; - user->elements = (gv_stack_t){0}; - user->closedElementType = TAG_NONE; - user->globalAttrType = TAG_NONE; - user->compositeReadState = FALSE; - user->edgeinverted = FALSE; - user->nameMap = dtopen(&nameDisc, Dtoset); - return user; +static userdata_t genUserdata(void) { + userdata_t user = {0}; + user.listen = FALSE; + user.elements = (gv_stack_t){0}; + user.closedElementType = TAG_NONE; + user.globalAttrType = TAG_NONE; + user.compositeReadState = FALSE; + user.edgeinverted = FALSE; + user.nameMap = dtopen(&nameDisc, Dtoset); + return user; } -static void freeUserdata(userdata_t * ud) -{ - dtclose(ud->nameMap); - agxbfree(&(ud->xml_attr_name)); - agxbfree(&(ud->xml_attr_value)); - agxbfree(&(ud->composite_buffer)); - freeString(&ud->elements); - free(ud); +static void freeUserdata(userdata_t ud) { + dtclose(ud.nameMap); + agxbfree(&ud.xml_attr_name); + agxbfree(&ud.xml_attr_value); + agxbfree(&ud.composite_buffer); + freeString(&ud.elements); } static void addToMap(Dt_t * map, char *name, char *uniqueName) @@ -700,15 +695,10 @@ Agraph_t *gxl_to_gv(FILE * gxlFile) { char buf[BUFSIZ]; int done; - userdata_t *udata = genUserdata(); + userdata_t udata = genUserdata(); XML_Parser parser = XML_ParserCreate(NULL); - if (udata == NULL) { - fprintf(stderr, "out of memory\n"); - graphviz_exit(1); - } - - XML_SetUserData(parser, udata); + XML_SetUserData(parser, &udata); XML_SetElementHandler(parser, startElementHandler, endElementHandler); XML_SetCharacterDataHandler(parser, characterDataHandler);