From 729fd554ee99413c0f106b8d243dc2329fe4dff6 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Tue, 31 Jul 2012 11:52:51 +0300 Subject: [PATCH] Allocate spec line buffer separately from spec struct - Further preliminaries for dynamic buffer resizing --- build/parseSpec.c | 2 +- build/rpmbuild_internal.h | 3 ++- build/spec.c | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/build/parseSpec.c b/build/parseSpec.c index d2ee922..4993fff 100644 --- a/build/parseSpec.c +++ b/build/parseSpec.c @@ -203,7 +203,7 @@ static int copyNextLineFromOFI(rpmSpec spec, OFI_t *ofi) /* Don't expand macros (eg. %define) in false branch of %if clause */ if (spec->readStack->reading && - expandMacros(spec, spec->macros, spec->lbuf, sizeof(spec->lbuf))) { + expandMacros(spec, spec->macros, spec->lbuf, spec->lbufSize)) { rpmlog(RPMLOG_ERR, _("line %d: %s\n"), spec->lineNum, spec->lbuf); return -1; diff --git a/build/rpmbuild_internal.h b/build/rpmbuild_internal.h index 50ddbe3..96f0028 100644 --- a/build/rpmbuild_internal.h +++ b/build/rpmbuild_internal.h @@ -41,7 +41,8 @@ struct rpmSpec_s { const char * rootDir; struct OpenFileInfo * fileStack; - char lbuf[10*BUFSIZ]; + char *lbuf; + size_t lbufSize; size_t lbufOff; char nextpeekc; char * nextline; diff --git a/build/spec.c b/build/spec.c index 00e4e6d..4b6b680 100644 --- a/build/spec.c +++ b/build/spec.c @@ -160,6 +160,8 @@ rpmSpec newSpec(void) spec->specFile = NULL; spec->fileStack = NULL; + spec->lbufSize = BUFSIZ * 10; + spec->lbuf = xmalloc(spec->lbufSize); spec->lbuf[0] = '\0'; spec->line = spec->lbuf; spec->nextline = NULL; @@ -237,6 +239,7 @@ rpmSpec rpmSpecFree(rpmSpec spec) rl->next = NULL; free(rl); } + spec->lbuf = _free(spec->lbuf); spec->sourceRpmName = _free(spec->sourceRpmName); spec->sourcePkgId = _free(spec->sourcePkgId); -- 2.7.4