Remove bogus const from rpmProblemString() return type
authorPanu Matilainen <pmatilai@redhat.com>
Sat, 15 Dec 2007 09:47:47 +0000 (11:47 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Sat, 15 Dec 2007 09:47:47 +0000 (11:47 +0200)
- its malloced so it needs to be freed
- fix all users to actually free

lib/rpmps.c
lib/rpmps.h
lib/verify.c
python/rpmps-py.c
python/rpmts-py.c

index bb78e51..68f7405 100644 (file)
@@ -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?");
index 699abd9..1d53d58 100644 (file)
@@ -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.
index bb33615..df01858 100644 (file)
@@ -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++;       
        }
     }
index df20140..4a59236 100644 (file)
@@ -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;
        }
     }
index 8cb9640..b60ef8f 100644 (file)
@@ -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);
     }