From 8082eb48dbb9ab39826b5e1be9b764b0940a9a79 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Mon, 27 Sep 2010 09:33:35 +0300 Subject: [PATCH] Avoid calloc() in macro findEntry() - It's just the macro name we're grabbing here, that ought to fit on stack comfortably enough. --- rpmio/macro.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/rpmio/macro.c b/rpmio/macro.c index 8b8ce59..78d1009 100644 --- a/rpmio/macro.c +++ b/rpmio/macro.c @@ -201,25 +201,24 @@ findEntry(rpmMacroContext mc, const char * name, size_t namelen) { rpmMacroEntry key, *ret; struct rpmMacroEntry_s keybuf; - char *namebuf = NULL; + char namebuf[namelen+1]; + const char *mname = name; if (mc == NULL) mc = rpmGlobalMacroContext; if (mc->macroTable == NULL || mc->firstFree == 0) return NULL; if (namelen > 0) { - namebuf = xcalloc(namelen + 1, sizeof(*namebuf)); strncpy(namebuf, name, namelen); namebuf[namelen] = '\0'; - name = namebuf; + mname = namebuf; } key = &keybuf; memset(key, 0, sizeof(*key)); - key->name = (char *)name; + key->name = (char *)mname; ret = (rpmMacroEntry *) bsearch(&key, mc->macroTable, mc->firstFree, sizeof(*(mc->macroTable)), compareMacroName); - _free(namebuf); /* XXX TODO: find 1st empty slot and return that */ return ret; } -- 2.7.4