From b4588a1202783dd9bbee594aa5aea022ccdd3fc9 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Sat, 15 Dec 2007 11:47:47 +0200 Subject: [PATCH] Remove bogus const from rpmProblemString() return type - its malloced so it needs to be freed - fix all users to actually free --- lib/rpmps.c | 2 +- lib/rpmps.h | 2 +- lib/verify.c | 4 +++- python/rpmps-py.c | 8 ++++++-- python/rpmts-py.c | 4 +++- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/rpmps.c b/lib/rpmps.c index bb78e51..68f7405 100644 --- a/lib/rpmps.c +++ b/lib/rpmps.c @@ -296,7 +296,7 @@ unsigned long rpmProblemGetLong(const rpmProblem p) return (p->ulong1); } -const char * rpmProblemString(const rpmProblem prob) +char * rpmProblemString(const rpmProblem prob) { const char * pkgNEVR = (prob->pkgNEVR ? prob->pkgNEVR : "?pkgNEVR?"); const char * altNEVR = (prob->altNEVR ? prob->altNEVR : "? ?altNEVR?"); diff --git a/lib/rpmps.h b/lib/rpmps.h index 699abd9..1d53d58 100644 --- a/lib/rpmps.h +++ b/lib/rpmps.h @@ -132,7 +132,7 @@ unsigned long rpmProblemGetLong(const rpmProblem prob); * @param prob rpm problem * @return formatted string (malloc'd) */ -extern const char * rpmProblemString(const rpmProblem prob); +extern char * rpmProblemString(const rpmProblem prob); /** \ingroup rpmps * Unreference a problem set instance. diff --git a/lib/verify.c b/lib/verify.c index bb33615..df01858 100644 --- a/lib/verify.c +++ b/lib/verify.c @@ -371,7 +371,9 @@ static int verifyDependencies(QVA_t qva, rpmts ts, free(nevra); while (rpmpsNextIterator(psi) >= 0) { rpmProblem p = rpmpsGetProblem(psi); - rpmlog(RPMLOG_NOTICE, "\t%s\n", rpmProblemString(p)); + char * ps = rpmProblemString(p); + rpmlog(RPMLOG_NOTICE, "\t%s\n", ps); + free(ps); rc++; } } diff --git a/python/rpmps-py.c b/python/rpmps-py.c index df20140..4a59236 100644 --- a/python/rpmps-py.c +++ b/python/rpmps-py.c @@ -68,7 +68,9 @@ fprintf(stderr, "*** rpmps_iternext(%p) ps %p psi %p\n", s, s->ps, s->psi); /* If more to do, return a problem set string. */ if (rpmpsNextIterator(s->psi) >= 0) { - result = Py_BuildValue("s", rpmProblemString(rpmpsGetProblem(s->psi))); + char * ps = rpmProblemString(rpmpsGetProblem(s->psi)); + result = Py_BuildValue("s", ps); + free(ps); } else { s->psi = rpmpsFreeIterator(s->psi); } @@ -148,7 +150,9 @@ rpmps_subscript(rpmpsObject * s, PyObject * key) psi = rpmpsInitIterator(s->ps); while ((i = rpmpsNextIterator(psi)) >= 0) { if (i == ix) { - result = Py_BuildValue("s", rpmProblemString(rpmpsGetProblem(psi))); + char * ps = rpmProblemString(rpmpsGetProblem(psi)); + result = Py_BuildValue("s", ps); + free(ps); break; } } diff --git a/python/rpmts-py.c b/python/rpmts-py.c index 8cb9640..b60ef8f 100644 --- a/python/rpmts-py.c +++ b/python/rpmts-py.c @@ -1139,11 +1139,13 @@ fprintf(stderr, "*** rpmts_Run(%p) ts %p ignore %x\n", s, s->ts, s->ignoreSet); psi = rpmpsInitIterator(ps); while (rpmpsNextIterator(psi) >= 0) { rpmProblem p = rpmpsGetProblem(psi); - PyObject * prob = Py_BuildValue("s(isN)", rpmProblemString(p), + char * ps = rpmProblemString(p); + PyObject * prob = Py_BuildValue("s(isN)", ps, rpmProblemGetType(p), rpmProblemGetStr(p), PyLong_FromLongLong(rpmProblemGetLong(p))); PyList_Append(list, prob); + free(ps); Py_DECREF(prob); } -- 2.7.4