splint fiddles, no warnings.
authorjbj <devnull@localhost>
Mon, 1 Dec 2003 19:15:38 +0000 (19:15 +0000)
committerjbj <devnull@localhost>
Mon, 1 Dec 2003 19:15:38 +0000 (19:15 +0000)
CVS patchset: 6961
CVS date: 2003/12/01 19:15:38

24 files changed:
lib/.splintrc
lib/rpmfi.c
lib/rpmts.c
python/.splintrc
python/rpmal-py.c
python/rpmal-py.h
python/rpmdb-py.c
python/rpmdebug-py.c
python/rpmds-py.c
python/rpmds-py.h
python/rpmfd-py.c
python/rpmfd-py.h
python/rpmfi-py.c
python/rpmfi-py.h
python/rpmfts-py.c
python/rpmmi-py.c
python/rpmmi-py.h
python/rpmrc-py.c
python/rpmrc-py.h
python/rpmte-py.c
python/rpmte-py.h
python/rpmts-py.c
python/rpmts-py.h
rpmio/.splintrc

index 9fbcfc5..7f27c75 100644 (file)
@@ -18,7 +18,7 @@
 -redecl
 -bufferoverflowhigh
 
--nullpass              # rpmExpand annoyance
+-nullpass              # 62 rpmExpand annoyance
 
 # --- +partial artifacts
 -declundef
@@ -38,7 +38,7 @@
 -exportfcn
 -exporttype
 -exportvar
--fielduse              # 1 occurence <bits/sigset.h>
+-fielduse              # 405
 -forblock              # tedious
 -ifblock               # tedious
 -namechecks            # 1843 tedious ANSI compliance checks
@@ -46,7 +46,7 @@
 
 -compdestroy           # 66
 -mustdefine            # 66
--sys-dir-errors
+-sys-dir-errors                # 842
 
 -strictops             # 46
 -whileblock            # 54
@@ -54,8 +54,8 @@
 # --- not-yet at checks level
 +enumint               # 861
 -mustfree              # 671
--predboolptr           # 311
--usedef                        # 191
+-predboolptr           # 308
+-usedef                        # 126
 
 # --- not-yet at standard level
 -boolops               # 165
index 2e61662..3f3af47 100644 (file)
@@ -1332,10 +1332,12 @@ if (fi->actions == NULL)
        i = p->nrelocs;
        if (newPath != NULL && *newPath != '\0' && p->relocs != NULL)
        for (i = 0; i < p->nrelocs; i++) {
+/*@-nullpass@*/ /* XXX {old,new}Path might be NULL */
           if (strcmp(p->relocs[i].oldPath, "/"))
                continue;
           if (strcmp(p->relocs[i].newPath, newPath))
                continue;
+/*@=nullpass@*/
           break;
        }
 
index cb98fc2..5a022ae 100644 (file)
@@ -219,6 +219,7 @@ static int isArch(const char * arch)
 }
 /*@=boundsread@*/
 
+/*@-compdef@*/ /* keyp might no be defined. */
 rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
                        const void * keyp, size_t keylen)
 {
@@ -299,6 +300,7 @@ rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
        xx = rpmdbSetIteratorRE(mi, RPMTAG_ARCH, RPMMIRE_DEFAULT, arch);
     return mi;
 }
+/*@=compdef@*/
 
 rpmRC rpmtsFindPubkey(rpmts ts)
 {
index 5998e6b..e757a05 100644 (file)
 +slovak-fcns
 -bufferoverflowhigh
 
--branchstate
--castfcnptr
--compdef
--evalorderuncon
--exportheader
--globs
--globstate
--incondefs             # 1
--internalglobs
--modfilesys
--modnomods
--modobserveruncon
--moduncon
--modunconnomods
--noeffect
--noeffectuncon
--nullassign
--nullderef
+-castfcnptr            # 48
+-compdef               # 28
+-globs                 # 150
+-globstate             # 3 rpmfd
+-internalglobs         # 114
+-modfilesys            # 131
+-moduncon              # 441
+-noeffect              # 7
+-noeffectuncon         # 132
+-nullassign            # 60
 -nullpass              # 40
--nullret
--nullstate
 -paramuse              # 14
--predboolothers
--protoparammatch
+-protoparammatch       # 5
 -redecl                        # 23
--retalias
--retvalint
--shiftimplementation
--sizeoftype
--type
--usereleased
-
--dependenttrans
--exposetrans
--immediatetrans
--kepttrans
--newreftrans
--observertrans
--onlytrans
--readonlytrans
--refcounttrans
--statictrans
--temptrans
-
--ifempty
+-retalias              # 41 PyNone
+-retvalint             # 51
+-sizeoftype            # 11
+-type                  # 44
+-usereleased           # 6
+
+-dependenttrans                # 3
+-exposetrans           # 2 rpmte
+-immediatetrans                # 34 PyNone
+-kepttrans             # 1 rpmfd
+-newreftrans           # 3
+-onlytrans             # 2 rpmfd
+-readonlytrans         # 211
+-refcounttrans         # 5
+-statictrans           # 46
+-temptrans             # 10
+
+-ifempty               # 51
 
 # --- +partial artifacts
 -declundef
index b91b861..05e5277 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "debug.h"
 
+/*@null@*/
 static PyObject *
 rpmal_Debug(/*@unused@*/ rpmalObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -28,6 +29,7 @@ rpmal_Debug(/*@unused@*/ rpmalObject * s, PyObject * args)
     return Py_None;
 }
 
+/*@null@*/
 static PyObject *
 rpmal_Add(rpmalObject * s, PyObject * args)
        /*@modifies s @*/
@@ -47,6 +49,7 @@ rpmal_Add(rpmalObject * s, PyObject * args)
     return Py_BuildValue("i", pkgKey);
 }
 
+/*@null@*/
 static PyObject *
 rpmal_Del(rpmalObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -63,6 +66,7 @@ rpmal_Del(rpmalObject * s, PyObject * args)
     return Py_None;
 }
 
+/*@null@*/
 static PyObject *
 rpmal_AddProvides(rpmalObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -81,6 +85,7 @@ rpmal_AddProvides(rpmalObject * s, PyObject * args)
     return Py_None;
 }
 
+/*@null@*/
 static PyObject *
 rpmal_MakeIndex(rpmalObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
index 0ed151b..d8aa09c 100644 (file)
@@ -16,6 +16,7 @@ typedef struct rpmalObject_s {
 /*@unchecked@*/
 extern PyTypeObject rpmal_Type;
 
+/*@null@*/
 rpmalObject * rpmal_Wrap(rpmal al)
        /*@*/;
 
index 88b80a9..945f798 100644 (file)
 
 /**
  */
+/*@null@*/
 static rpmmiObject *
 rpmdb_Match (rpmdbObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext @*/
@@ -164,6 +165,7 @@ rpmdb_length(rpmdbObject * s)
 
 /**
  */
+/*@null@*/
 static hdrObject *
 rpmdb_subscript(rpmdbObject * s, PyObject * key)
        /*@globals rpmGlobalMacroContext @*/
@@ -208,7 +210,7 @@ static PyMappingMethods rpmdb_as_mapping = {
 static void rpmdb_dealloc(rpmdbObject * s)
        /*@modifies s @*/
 {
-    if (s->db)
+    if (s->db != NULL)
        rpmdbClose(s->db);
     PyObject_Del(s);
 }
index e592073..9849dd5 100644 (file)
@@ -21,6 +21,7 @@ extern PyTypeObject PyFrame_Type;
 
 /**
  */
+/*@observer@*/
 static const char * lbl(void * s)
        /*@*/
 {
index f203516..3bb7c99 100644 (file)
@@ -19,6 +19,7 @@
 
 /*@access rpmds @*/
 
+/*@null@*/
 static PyObject *
 rpmds_Debug(/*@unused@*/ rpmdsObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -29,6 +30,7 @@ rpmds_Debug(/*@unused@*/ rpmdsObject * s, PyObject * args)
     return Py_None;
 }
 
+/*@null@*/
 static PyObject *
 rpmds_Count(rpmdsObject * s, PyObject * args)
        /*@*/
@@ -37,6 +39,7 @@ rpmds_Count(rpmdsObject * s, PyObject * args)
     return Py_BuildValue("i", rpmdsCount(s->ds));
 }
 
+/*@null@*/
 static PyObject *
 rpmds_Ix(rpmdsObject * s, PyObject * args)
        /*@*/
@@ -45,6 +48,7 @@ rpmds_Ix(rpmdsObject * s, PyObject * args)
     return Py_BuildValue("i", rpmdsIx(s->ds));
 }
 
+/*@null@*/
 static PyObject *
 rpmds_DNEVR(rpmdsObject * s, PyObject * args)
        /*@*/
@@ -53,6 +57,7 @@ rpmds_DNEVR(rpmdsObject * s, PyObject * args)
     return Py_BuildValue("s", rpmdsDNEVR(s->ds));
 }
 
+/*@null@*/
 static PyObject *
 rpmds_N(rpmdsObject * s, PyObject * args)
        /*@*/
@@ -61,6 +66,7 @@ rpmds_N(rpmdsObject * s, PyObject * args)
     return Py_BuildValue("s", rpmdsN(s->ds));
 }
 
+/*@null@*/
 static PyObject *
 rpmds_EVR(rpmdsObject * s, PyObject * args)
        /*@*/
@@ -69,6 +75,7 @@ rpmds_EVR(rpmdsObject * s, PyObject * args)
     return Py_BuildValue("s", rpmdsEVR(s->ds));
 }
 
+/*@null@*/
 static PyObject *
 rpmds_Flags(rpmdsObject * s, PyObject * args)
        /*@*/
@@ -77,6 +84,7 @@ rpmds_Flags(rpmdsObject * s, PyObject * args)
     return Py_BuildValue("i", rpmdsFlags(s->ds));
 }
 
+/*@null@*/
 static PyObject *
 rpmds_TagN(rpmdsObject * s, PyObject * args)
        /*@*/
@@ -85,6 +93,7 @@ rpmds_TagN(rpmdsObject * s, PyObject * args)
     return Py_BuildValue("i", rpmdsTagN(s->ds));
 }
 
+/*@null@*/
 static PyObject *
 rpmds_Color(rpmdsObject * s, PyObject * args)
        /*@*/
@@ -93,6 +102,7 @@ rpmds_Color(rpmdsObject * s, PyObject * args)
     return Py_BuildValue("i", rpmdsColor(s->ds));
 }
 
+/*@null@*/
 static PyObject *
 rpmds_Refs(rpmdsObject * s, PyObject * args)
        /*@*/
@@ -116,6 +126,7 @@ rpmds_iter(rpmdsObject * s)
     return (PyObject *)s;
 }
 
+/*@null@*/
 static PyObject *
 rpmds_iternext(rpmdsObject * s)
        /*@globals _Py_NoneStruct @*/
@@ -153,6 +164,7 @@ rpmds_iternext(rpmdsObject * s)
     return result;
 }
 
+/*@null@*/
 static PyObject *
 rpmds_Next(rpmdsObject * s, PyObject *args)
        /*@globals _Py_NoneStruct @*/
@@ -172,6 +184,7 @@ rpmds_Next(rpmdsObject * s, PyObject *args)
     return result;
 }
 
+/*@null@*/
 static PyObject *
 rpmds_SetNoPromote(rpmdsObject * s, PyObject * args)
        /*@modifies s @*/
@@ -183,6 +196,7 @@ rpmds_SetNoPromote(rpmdsObject * s, PyObject * args)
     return Py_BuildValue("i", rpmdsSetNoPromote(s->ds, nopromote));
 }
 
+/*@null@*/
 static PyObject *
 rpmds_Notify(rpmdsObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -199,6 +213,7 @@ rpmds_Notify(rpmdsObject * s, PyObject * args)
 }
 
 #ifdef NOTYET
+/*@null@*/
 static PyObject *
 rpmds_Problem(rpmdsObject * s, PyObject * args)
        /*@*/
@@ -293,6 +308,7 @@ rpmds_length(rpmdsObject * s)
     return rpmdsCount(s->ds);
 }
 
+/*@null@*/
 static PyObject *
 rpmds_subscript(rpmdsObject * s, PyObject * key)
        /*@modifies s @*/
index b0c15b4..0a01fe4 100644 (file)
@@ -24,26 +24,31 @@ extern PyTypeObject rpmds_Type;
 
 /**
  */
+/*@null@*/
 rpmds dsFromDs(rpmdsObject * ds)
        /*@*/;
 
 /**
  */
+/*@null@*/
 rpmdsObject * rpmds_Wrap(rpmds ds)
        /*@*/;
 
 /**
  */
+/*@null@*/
 rpmdsObject * rpmds_Single(PyObject * s, PyObject * args)
        /*@*/;
 
 /**
  */
+/*@null@*/
 rpmdsObject * hdr_dsFromHeader(PyObject * s, PyObject * args)
        /*@*/;
 
 /**
  */
+/*@null@*/
 rpmdsObject * hdr_dsOfHeader(PyObject * s, PyObject * args)
        /*@*/;
 
index e3ae9c6..9c43bc7 100644 (file)
@@ -32,6 +32,7 @@ static int _rpmfd_debug = 1;
  * \brief An python rpm.fd object represents an rpm I/O handle.
  */
 
+/*@null@*/
 static PyObject *
 rpmfd_Debug(/*@unused@*/ rpmfdObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -79,6 +80,7 @@ static int closeCallback(FILE * f)
        last = node;
        node = node->next;
     }
+/*@-branchstate@*/
     if (node) {
        if (last)
            last->next = node->next;
@@ -91,11 +93,13 @@ static int closeCallback(FILE * f)
            node->fd = fdFree(node->fd, "closeCallback");
        node = _free (node);
     }
+/*@=branchstate@*/
     return 0;
 }
 
 /**
  */
+/*@null@*/
 static PyObject *
 rpmfd_Fopen(/*@unused@*/ PyObject * s, PyObject * args)
        /*@globals fdhead, fdtail @*/
@@ -136,6 +140,7 @@ rpmfd_Fopen(/*@unused@*/ PyObject * s, PyObject * args)
     }
 
     node->next = NULL;
+/*@-branchstate@*/
     if (!fdhead) {
        fdhead = fdtail = node;
     } else if (fdtail) {
@@ -143,6 +148,7 @@ rpmfd_Fopen(/*@unused@*/ PyObject * s, PyObject * args)
     } else {
        fdhead = node;
     }
+/*@=branchstate@*/
     fdtail = node;
 
     return PyFile_FromFile (node->f, path, mode, closeCallback);
@@ -247,6 +253,7 @@ fprintf(stderr, "*** rpmfd_alloc(%p,%d) ret %p\n", subtype, nitems, s);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static rpmfdObject * rpmfd_new(PyTypeObject * subtype, PyObject *args, PyObject *kwds)
        /*@*/
 {
index edea5e8..0d01660 100644 (file)
@@ -8,12 +8,14 @@
 typedef struct rpmfdObject_s {
     PyObject_HEAD
     PyObject *md_dict;         /*!< to look like PyModuleObject */
+/*@relnull@*/
     FD_t       fd;
 } rpmfdObject;
 
 /*@unchecked@*/
 extern PyTypeObject rpmfd_Type;
 
+/*@null@*/
 rpmfdObject * rpmfd_Wrap(FD_t fd)
        /*@*/;
 
index bd77e15..691ba06 100644 (file)
@@ -19,6 +19,7 @@
 
 /*@access rpmfi @*/
 
+/*@null@*/
 static PyObject *
 rpmfi_Debug(/*@unused@*/ rpmfiObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -29,6 +30,7 @@ rpmfi_Debug(/*@unused@*/ rpmfiObject * s, PyObject * args)
     return Py_None;
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FC(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -37,6 +39,7 @@ rpmfi_FC(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("i", rpmfiFC(s->fi));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FX(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -45,6 +48,7 @@ rpmfi_FX(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("i", rpmfiFX(s->fi));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_DC(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -53,6 +57,7 @@ rpmfi_DC(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("i", rpmfiDC(s->fi));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_DX(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -61,6 +66,7 @@ rpmfi_DX(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("i", rpmfiDX(s->fi));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_BN(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -69,6 +75,7 @@ rpmfi_BN(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("s", xstrdup(rpmfiBN(s->fi)));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_DN(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -77,6 +84,7 @@ rpmfi_DN(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("s", xstrdup(rpmfiDN(s->fi)));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FN(rpmfiObject * s, PyObject * args)
        /*@modifies s @*/
@@ -85,6 +93,7 @@ rpmfi_FN(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("s", xstrdup(rpmfiFN(s->fi)));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FFlags(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -93,6 +102,7 @@ rpmfi_FFlags(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("i", rpmfiFFlags(s->fi));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_VFlags(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -101,6 +111,7 @@ rpmfi_VFlags(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("i", rpmfiVFlags(s->fi));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FMode(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -109,6 +120,7 @@ rpmfi_FMode(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("i", rpmfiFMode(s->fi));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FState(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -118,6 +130,7 @@ rpmfi_FState(rpmfiObject * s, PyObject * args)
 }
 
 /* XXX rpmfiMD5 */
+/*@null@*/
 static PyObject *
 rpmfi_MD5(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -129,12 +142,14 @@ rpmfi_MD5(rpmfiObject * s, PyObject * args)
 
     if (!PyArg_ParseTuple(args, ":MD5")) return NULL;
     MD5 = rpmfiMD5(s->fi);
+    if (MD5 != NULL)
     for (i = 0, t = fmd5; i < 16; i++, t += 2)
        sprintf(t, "%02x", MD5[i]);
     *t = '\0';
     return Py_BuildValue("s", xstrdup(fmd5));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FLink(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -143,6 +158,7 @@ rpmfi_FLink(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("s", xstrdup(rpmfiFLink(s->fi)));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FSize(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -151,6 +167,7 @@ rpmfi_FSize(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("i", rpmfiFSize(s->fi));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FRdev(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -159,6 +176,7 @@ rpmfi_FRdev(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("i", rpmfiFRdev(s->fi));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FMtime(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -167,6 +185,7 @@ rpmfi_FMtime(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("i", rpmfiFMtime(s->fi));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FUser(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -175,6 +194,7 @@ rpmfi_FUser(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("s", xstrdup(rpmfiFUser(s->fi)));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FGroup(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -183,6 +203,7 @@ rpmfi_FGroup(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("s", xstrdup(rpmfiFGroup(s->fi)));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FColor(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -191,6 +212,7 @@ rpmfi_FColor(rpmfiObject * s, PyObject * args)
     return Py_BuildValue("i", rpmfiFColor(s->fi));
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_FClass(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -213,6 +235,7 @@ rpmfi_iter(rpmfiObject * s, /*@unused@*/ PyObject * args)
 }
 #endif
 
+/*@null@*/
 static PyObject *
 rpmfi_iternext(rpmfiObject * s)
        /*@globals _Py_NoneStruct @*/
@@ -311,6 +334,7 @@ rpmfi_Next(rpmfiObject * s, /*@unused@*/ PyObject * args)
 }
 
 #ifdef NOTYET
+/*@null@*/
 static PyObject *
 rpmfi_NextD(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -321,6 +345,7 @@ rpmfi_NextD(rpmfiObject * s, PyObject * args)
        return Py_None;
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_InitD(rpmfiObject * s, PyObject * args)
        /*@*/
@@ -435,6 +460,7 @@ rpmfi_length(rpmfiObject * s)
     return rpmfiFC(s->fi);
 }
 
+/*@null@*/
 static PyObject *
 rpmfi_subscript(rpmfiObject * s, PyObject * key)
        /*@modifies s @*/
index e721a34..addff73 100644 (file)
@@ -18,13 +18,17 @@ typedef struct rpmfiObject_s {
 /*@unchecked@*/
 extern PyTypeObject rpmfi_Type;
 
+/*@null@*/
 rpmfi fiFromFi(rpmfiObject * fi)
        /*@*/;
 
+/*@null@*/
 rpmfiObject * rpmfi_Wrap(rpmfi fi)
        /*@*/;
 
+/*@null@*/
 rpmfiObject * hdr_fiFromHeader(PyObject * s, PyObject * args)
-       /*@*/;
+       /*@globals rpmGlobalMacroContext @*/
+       /*@modifies rpmGlobalMacroContext @*/;
 
 #endif
index eee87e1..52b16b5 100644 (file)
@@ -72,10 +72,11 @@ rpmfts_initialize(rpmftsObject * s, const char * root, int options, int ignore)
        /*@modifies s @*/
 {
     int ac = 1;
-    char * t;
     size_t nb;
 
+/*@-branchstate@*/
     if (root == NULL)  root = "/";
+/*@=branchstate@*/
     if (options == -1) options = (FTS_COMFOLLOW | FTS_LOGICAL | FTS_NOSTAT);
     if (ignore == -1)  ignore = infoBit(FTS_DP);
 
@@ -84,10 +85,12 @@ rpmfts_initialize(rpmftsObject * s, const char * root, int options, int ignore)
     nb = (ac + 1) * sizeof(*s->roots);
     nb += strlen(root) + 1;
     s->roots = malloc(nb);
-    t = (char *) &s->roots[ac + 1];
-    s->roots[0] = t;
-    s->roots[ac] = NULL;
-    (void) stpcpy(t, root);
+    if (s->roots != NULL) {
+       char *t = (char *) &s->roots[ac + 1];
+       s->roots[0] = t;
+       s->roots[ac] = NULL;
+       (void) stpcpy(t, root);
+    }
 
     s->options = options;
     s->ignore = ignore;
@@ -131,6 +134,7 @@ rpmfts_debug(__FUNCTION__, s);
     return rc;
 }
 
+/*@null@*/
 static PyObject *
 rpmfts_step(rpmftsObject * s)
        /*@modifies s @*/
@@ -168,6 +172,7 @@ rpmfts_debug(__FUNCTION__, s);
  * \brief A python rpm.fts object represents an rpm fts(3) handle.
  */
 
+/*@null@*/
 static PyObject *
 rpmfts_Debug(/*@unused@*/ rpmftsObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -180,6 +185,7 @@ rpmfts_Debug(/*@unused@*/ rpmftsObject * s, PyObject * args)
     return Py_None;
 }
 
+/*@null@*/
 static PyObject *
 rpmfts_Open(rpmftsObject * s, PyObject * args)
        /*@modifies s @*/
@@ -199,6 +205,7 @@ rpmfts_debug(__FUNCTION__, s);
     return (PyObject *)s;
 }
 
+/*@null@*/
 static PyObject *
 rpmfts_Read(rpmftsObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -219,6 +226,7 @@ rpmfts_debug(__FUNCTION__, s);
     return result;
 }
 
+/*@null@*/
 static PyObject *
 rpmfts_Children(rpmftsObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -240,6 +248,7 @@ rpmfts_debug(__FUNCTION__, s);
     return Py_None;
 }
 
+/*@null@*/
 static PyObject *
 rpmfts_Close(rpmftsObject * s, PyObject * args)
        /*@modifies s @*/
@@ -251,6 +260,7 @@ rpmfts_debug(__FUNCTION__, s);
     return Py_BuildValue("i", rpmfts_state(s, RPMFTS_CLOSE));
 }
 
+/*@null@*/
 static PyObject *
 rpmfts_Set(rpmftsObject * s, PyObject * args)
        /*@modifies s @*/
@@ -326,6 +336,7 @@ rpmfts_iter(rpmftsObject * s)
     return (PyObject *)s;
 }
 
+/*@null@*/
 static PyObject *
 rpmfts_iternext(rpmftsObject * s)
        /*@modifies s @*/
@@ -388,6 +399,7 @@ rpmfts_debug(__FUNCTION__, s);
     return rpmfts_initialize(s, root, options, ignore);
 }
 
+/*@null@*/
 static PyObject * rpmfts_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
        /*@*/
 {
@@ -491,7 +503,7 @@ static int rpmfts_print(rpmftsObject * s,  FILE * fp, /*@unused@*/ int flags)
 {
     static int indent = 2;
 
-    if (!(s && s->ftsp && s->fts))
+    if (!(s != NULL && s->ftsp != NULL && s->fts != NULL))
        return -1;
     fprintf(fp, "FTS_%-7s %*s%s", ftsInfoStr(s->fts->fts_info),
        indent * (s->fts->fts_level < 0 ? 0 : s->fts->fts_level), "",
index 5fc4020..4766bbd 100644 (file)
@@ -84,6 +84,7 @@ rpmmi_iter(rpmmiObject * s)
 
 /**
  */
+/*@null@*/
 static PyObject *
 rpmmi_iternext(rpmmiObject * s)
        /*@globals rpmGlobalMacroContext @*/
@@ -100,6 +101,7 @@ rpmmi_iternext(rpmmiObject * s)
 
 /**
  */
+/*@null@*/
 static PyObject *
 rpmmi_Next(rpmmiObject * s, PyObject *args)
        /*@globals rpmGlobalMacroContext, _Py_NoneStruct @*/
@@ -121,6 +123,7 @@ rpmmi_Next(rpmmiObject * s, PyObject *args)
 
 /**
  */
+/*@null@*/
 static PyObject *
 rpmmi_Instance(rpmmiObject * s, PyObject * args)
        /*@*/
@@ -130,7 +133,7 @@ rpmmi_Instance(rpmmiObject * s, PyObject * args)
     if (!PyArg_ParseTuple(args, ":Instance"))
        return NULL;
 
-    if (s->mi)
+    if (s->mi != NULL)
        rc = rpmdbGetIteratorOffset(s->mi);
 
     return Py_BuildValue("i", rc);
@@ -138,6 +141,7 @@ rpmmi_Instance(rpmmiObject * s, PyObject * args)
 
 /**
  */
+/*@null@*/
 static PyObject *
 rpmmi_Count(rpmmiObject * s, PyObject * args)
        /*@*/
@@ -147,7 +151,7 @@ rpmmi_Count(rpmmiObject * s, PyObject * args)
     if (!PyArg_ParseTuple(args, ":Instance"))
        return NULL;
 
-    if (s->mi)
+    if (s->mi != NULL)
        rc = rpmdbGetIteratorCount(s->mi);
 
     return Py_BuildValue("i", rc);
@@ -155,6 +159,7 @@ rpmmi_Count(rpmmiObject * s, PyObject * args)
 
 /**
  */
+/*@null@*/
 static PyObject *
 rpmmi_Pattern(rpmmiObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext, _Py_NoneStruct @*/
index 4c08bd6..c45b2fd 100644 (file)
@@ -20,6 +20,7 @@ struct rpmmiObject_s {
 /*@unchecked@*/
 extern PyTypeObject rpmmi_Type;
 
+/*@null@*/
 rpmmiObject * rpmmi_Wrap(rpmdbMatchIterator mi)
        /*@*/;
 
index 43fb105..12e6981 100644 (file)
@@ -227,6 +227,7 @@ fprintf(stderr, "*** rpmrc_iter(%p[%s])\n", s, lbl(s));
 
 /**
  */
+/*@null@*/
 static PyObject * rpmrc_iternext(PyObject * s)
        /*@*/
 {
@@ -239,6 +240,7 @@ fprintf(stderr, "*** rpmrc_iternext(%p[%s])\n", s, lbl(s));
 
 /**
  */
+/*@null@*/
 static PyObject * rpmrc_next(PyObject * s, PyObject *args)
        /*@*/
 {
@@ -285,6 +287,7 @@ fprintf(stderr, "*** rpmrc_alloc(%p[%s},%d) ret %p[%s]\n", subtype, lbl(subtype)
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject * rpmrc_new(PyTypeObject * subtype, PyObject *args, PyObject *kwds)
        /*@*/
 {
index ccac3b6..1ebfa67 100644 (file)
@@ -23,14 +23,17 @@ struct rpmrcObject_s {
 /*@unchecked@*/
 extern PyTypeObject rpmrc_Type;
 
+/*@null@*/
 PyObject * rpmrc_AddMacro(PyObject * self, PyObject * args)
        /*@globals rpmGlobalMacroContext, _Py_NoneStruct @*/
        /*@modifies rpmGlobalMacroContext, _Py_NoneStruct @*/;
+/*@null@*/
 PyObject * rpmrc_DelMacro(PyObject * self, PyObject * args)
        /*@globals rpmGlobalMacroContext, _Py_NoneStruct @*/
        /*@modifies rpmGlobalMacroContext, _Py_NoneStruct @*/;
 
 #if Py_TPFLAGS_HAVE_ITER       /* XXX backport to python-1.5.2 */
+/*@null@*/
 PyObject * rpmrc_Create(PyObject * self, PyObject * args, PyObject * kwds)
        /*@*/;
 #endif
index e1e1ff6..a004c07 100644 (file)
@@ -58,6 +58,7 @@
  * @param tag  'Basenames'
  */
 
+/*@null@*/
 static PyObject *
 rpmte_Debug(/*@unused@*/ rpmteObject * s, /*@unused@*/ PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -68,6 +69,7 @@ rpmte_Debug(/*@unused@*/ rpmteObject * s, /*@unused@*/ PyObject * args)
     return Py_None;
 }
 
+/*@null@*/
 static PyObject *
 rpmte_TEType(rpmteObject * s, PyObject * args)
        /*@*/
@@ -76,6 +78,7 @@ rpmte_TEType(rpmteObject * s, PyObject * args)
     return Py_BuildValue("i", rpmteType(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_N(rpmteObject * s, PyObject * args)
        /*@*/
@@ -84,6 +87,7 @@ rpmte_N(rpmteObject * s, PyObject * args)
     return Py_BuildValue("s", rpmteN(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_E(rpmteObject * s, PyObject * args)
        /*@*/
@@ -92,6 +96,7 @@ rpmte_E(rpmteObject * s, PyObject * args)
     return Py_BuildValue("s", rpmteE(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_V(rpmteObject * s, PyObject * args)
        /*@*/
@@ -100,6 +105,7 @@ rpmte_V(rpmteObject * s, PyObject * args)
     return Py_BuildValue("s", rpmteV(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_R(rpmteObject * s, PyObject * args)
        /*@*/
@@ -108,6 +114,7 @@ rpmte_R(rpmteObject * s, PyObject * args)
     return Py_BuildValue("s", rpmteR(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_A(rpmteObject * s, PyObject * args)
        /*@*/
@@ -116,6 +123,7 @@ rpmte_A(rpmteObject * s, PyObject * args)
     return Py_BuildValue("s", rpmteA(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_O(rpmteObject * s, PyObject * args)
        /*@*/
@@ -124,6 +132,7 @@ rpmte_O(rpmteObject * s, PyObject * args)
     return Py_BuildValue("s", rpmteO(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_NEVR(rpmteObject * s, PyObject * args)
        /*@*/
@@ -132,6 +141,7 @@ rpmte_NEVR(rpmteObject * s, PyObject * args)
     return Py_BuildValue("s", rpmteNEVR(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_Color(rpmteObject * s, PyObject * args)
        /*@*/
@@ -140,6 +150,7 @@ rpmte_Color(rpmteObject * s, PyObject * args)
     return Py_BuildValue("i", rpmteColor(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_PkgFileSize(rpmteObject * s, PyObject * args)
        /*@*/
@@ -148,6 +159,7 @@ rpmte_PkgFileSize(rpmteObject * s, PyObject * args)
     return Py_BuildValue("i", rpmtePkgFileSize(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_Depth(rpmteObject * s, PyObject * args)
        /*@*/
@@ -156,6 +168,7 @@ rpmte_Depth(rpmteObject * s, PyObject * args)
     return Py_BuildValue("i", rpmteDepth(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_Npreds(rpmteObject * s, PyObject * args)
        /*@*/
@@ -164,6 +177,7 @@ rpmte_Npreds(rpmteObject * s, PyObject * args)
     return Py_BuildValue("i", rpmteNpreds(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_Degree(rpmteObject * s, PyObject * args)
        /*@*/
@@ -172,6 +186,7 @@ rpmte_Degree(rpmteObject * s, PyObject * args)
     return Py_BuildValue("i", rpmteDegree(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_Parent(rpmteObject * s, PyObject * args)
        /*@*/
@@ -180,6 +195,7 @@ rpmte_Parent(rpmteObject * s, PyObject * args)
     return Py_BuildValue("i", rpmteParent(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_Tree(rpmteObject * s, PyObject * args)
        /*@*/
@@ -188,6 +204,7 @@ rpmte_Tree(rpmteObject * s, PyObject * args)
     return Py_BuildValue("i", rpmteTree(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_AddedKey(rpmteObject * s, PyObject * args)
        /*@*/
@@ -196,6 +213,7 @@ rpmte_AddedKey(rpmteObject * s, PyObject * args)
     return Py_BuildValue("i", rpmteAddedKey(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_DependsOnKey(rpmteObject * s, PyObject * args)
        /*@*/
@@ -204,6 +222,7 @@ rpmte_DependsOnKey(rpmteObject * s, PyObject * args)
     return Py_BuildValue("i", rpmteDependsOnKey(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_DBOffset(rpmteObject * s, PyObject * args)
        /*@*/
@@ -212,6 +231,7 @@ rpmte_DBOffset(rpmteObject * s, PyObject * args)
     return Py_BuildValue("i", rpmteDBOffset(s->te));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_Key(rpmteObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -229,6 +249,7 @@ rpmte_Key(rpmteObject * s, PyObject * args)
     return Key;
 }
 
+/*@null@*/
 static PyObject *
 rpmte_DS(rpmteObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -259,6 +280,7 @@ rpmte_DS(rpmteObject * s, PyObject * args)
     return (PyObject *) rpmds_Wrap(rpmdsLink(ds, "rpmte_DS"));
 }
 
+/*@null@*/
 static PyObject *
 rpmte_FI(rpmteObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
index 504cc5e..81ff3cf 100644 (file)
@@ -16,6 +16,7 @@ typedef struct rpmteObject_s {
 /*@unchecked@*/
 extern PyTypeObject rpmte_Type;
 
+/*@null@*/
 rpmteObject * rpmte_Wrap(rpmte te)
        /*@*/;
 
index 1b81a96..f7c381a 100644 (file)
@@ -169,6 +169,7 @@ struct rpmtsCallbackType_s {
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_Debug(/*@unused@*/ rpmtsObject * s, PyObject * args)
         /*@globals _Py_NoneStruct @*/
@@ -191,7 +192,8 @@ fprintf(stderr, "*** rpmts_Debug(%p) ts %p\n", s, s->ts);
  */
 static void rpmtsAddAvailableElement(rpmts ts, Header h,
                /*@exposed@*/ /*@null@*/ fnpyKey key)
-       /*@modifies h, ts @*/
+       /*@globals rpmGlobalMacroContext @*/
+       /*@modifies h, ts, rpmGlobalMacroContext @*/
 {
     int scareMem = 0;
     rpmds provides = rpmdsNew(h, RPMTAG_PROVIDENAME, scareMem);
@@ -210,6 +212,7 @@ fprintf(stderr, "\tAddAvailable(%p) list %p\n", ts, ts->availablePackages);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_AddInstall(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext, _Py_NoneStruct @*/
@@ -217,7 +220,7 @@ rpmts_AddInstall(rpmtsObject * s, PyObject * args)
 {
     hdrObject * h;
     PyObject * key;
-    char * how = NULL;
+    char * how = "u";  /* XXX default to upgrade element if missing */
     int isUpgrade = 0;
 
     if (!PyArg_ParseTuple(args, "O!O|s:AddInstall", &hdr_Type, &h, &key, &how))
@@ -255,6 +258,7 @@ fprintf(stderr, "*** rpmts_AddInstall(%p,%p,%p,%s) ts %p\n", s, h, key, how, s->
 /** \ingroup py_c
  * @todo Permit finer control (i.e. not just --allmatches) of deleted elments.
  */
+/*@null@*/
 static PyObject *
 rpmts_AddErase(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext, _Py_NoneStruct @*/
@@ -352,6 +356,7 @@ fprintf(stderr, "*** rpmts_SolveCallback(%p,%p,%p) \"%s\"\n", ts, ds, data, rpmd
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_Check(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext, _Py_NoneStruct @*/
@@ -394,7 +399,7 @@ fprintf(stderr, "*** rpmts_Check(%p) ts %p cb %p\n", s, s->ts, cbInfo.cb);
 
     PyEval_RestoreThread(cbInfo._save);
 
-    if (ps) {
+    if (ps != NULL) {
        list = PyList_New(0);
 
        /* XXX TODO: rpmlib >= 4.0.3 can return multiple suggested keys. */
@@ -465,6 +470,7 @@ fprintf(stderr, "*** rpmts_Check(%p) ts %p cb %p\n", s, s->ts, cbInfo.cb);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_Order(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext @*/
@@ -486,6 +492,7 @@ fprintf(stderr, "*** rpmts_Order(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_Clean(rpmtsObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -504,6 +511,7 @@ fprintf(stderr, "*** rpmts_Clean(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_IDTXload(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext, _Py_NoneStruct @*/
@@ -522,6 +530,7 @@ fprintf(stderr, "*** rpmts_IDTXload(%p) ts %p\n", s, s->ts);
     idtx = IDTXload(s->ts, tag);
     Py_END_ALLOW_THREADS
 
+/*@-branchstate@*/
     if (idtx == NULL || idtx->nidt <= 0) {
        Py_INCREF(Py_None);
        result = Py_None;
@@ -540,6 +549,7 @@ fprintf(stderr, "*** rpmts_IDTXload(%p) ts %p\n", s, s->ts);
            Py_DECREF(ho);
        }
     }
+/*@=branchstate@*/
 
     idtx = IDTXfree(idtx);
 
@@ -548,6 +558,7 @@ fprintf(stderr, "*** rpmts_IDTXload(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_IDTXglob(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext, _Py_NoneStruct @*/
@@ -569,6 +580,7 @@ fprintf(stderr, "*** rpmts_IDTXglob(%p) ts %p\n", s, s->ts);
     globstr = _free(globstr);
     Py_END_ALLOW_THREADS
 
+/*@-branchstate@*/
     if (idtx == NULL || idtx->nidt <= 0) {
        Py_INCREF(Py_None);
        result = Py_None;
@@ -587,6 +599,7 @@ fprintf(stderr, "*** rpmts_IDTXglob(%p) ts %p\n", s, s->ts);
            Py_DECREF(ho);
        }
     }
+/*@=branchstate@*/
 
     idtx = IDTXfree(idtx);
 
@@ -595,6 +608,7 @@ fprintf(stderr, "*** rpmts_IDTXglob(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_Rollback(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext @*/
@@ -631,6 +645,7 @@ fprintf(stderr, "*** rpmts_Rollback(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_OpenDB(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext @*/
@@ -650,6 +665,7 @@ fprintf(stderr, "*** rpmts_OpenDB(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_CloseDB(rpmtsObject * s, PyObject * args)
        /*@modifies s @*/
@@ -669,6 +685,7 @@ fprintf(stderr, "*** rpmts_CloseDB(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_InitDB(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext @*/
@@ -690,6 +707,7 @@ fprintf(stderr, "*** rpmts_InitDB(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_RebuildDB(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext @*/
@@ -711,6 +729,7 @@ fprintf(stderr, "*** rpmts_RebuildDB(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_VerifyDB(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext @*/
@@ -732,6 +751,7 @@ fprintf(stderr, "*** rpmts_VerifyDB(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_HdrFromFdno(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext, fileSystem @*/
@@ -752,6 +772,7 @@ rpmts_HdrFromFdno(rpmtsObject * s, PyObject * args)
 if (_rpmts_debug)
 fprintf(stderr, "*** rpmts_HdrFromFdno(%p) ts %p rc %d\n", s, s->ts, rpmrc);
 
+/*@-branchstate@*/
     switch (rpmrc) {
     case RPMRC_OK:
        if (h)
@@ -773,12 +794,14 @@ fprintf(stderr, "*** rpmts_HdrFromFdno(%p) ts %p rc %d\n", s, s->ts, rpmrc);
        PyErr_SetString(pyrpmError, "error reading package header");
        break;
     }
+/*@=branchstate@*/
 
     return result;
 }
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_HdrCheck(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext, _Py_NoneStruct @*/
@@ -834,6 +857,7 @@ fprintf(stderr, "*** rpmts_HdrCheck(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_SetVSFlags(rpmtsObject * s, PyObject * args)
        /*@modifies s @*/
@@ -852,6 +876,7 @@ fprintf(stderr, "*** rpmts_SetVSFlags(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_SetColor(rpmtsObject * s, PyObject * args)
        /*@modifies s @*/
@@ -870,6 +895,7 @@ fprintf(stderr, "*** rpmts_SetColor(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_PgpPrtPkts(rpmtsObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -902,6 +928,7 @@ fprintf(stderr, "*** rpmts_PgpPrtPkts(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_PgpImportPubkey(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext, _Py_NoneStruct @*/
@@ -934,6 +961,7 @@ fprintf(stderr, "*** rpmts_PgpImportPubkey(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static PyObject *
 rpmts_GetKeys(rpmtsObject * s, PyObject * args)
        /*@globals _Py_NoneStruct @*/
@@ -971,6 +999,7 @@ fprintf(stderr, "*** rpmts_GetKeys(%p) ts %p\n", s, s->ts);
 
 /** \ingroup py_c
  */
+/*@null@*/
 static void *
 rpmtsCallback(/*@unused@*/ const void * hd, const rpmCallbackType what,
                         const unsigned long amount, const unsigned long total,
@@ -1166,6 +1195,7 @@ fprintf(stderr, "*** rpmts_iter(%p) ts %p\n", s, s->ts);
 /**
  * @todo Add TR_ADDED filter to iterator.
  */
+/*@null@*/
 static PyObject *
 rpmts_iternext(rpmtsObject * s)
        /*@modifies s @*/
@@ -1185,12 +1215,14 @@ fprintf(stderr, "*** rpmts_iternext(%p) ts %p tsi %p %d\n", s, s->ts, s->tsi, s-
     }
 
     te = rpmtsiNext(s->tsi, s->tsiFilter);
+/*@-branchstate@*/
     if (te != NULL) {
        result = (PyObject *) rpmte_Wrap(te);
     } else {
        s->tsi = rpmtsiFree(s->tsi);
        s->tsiFilter = 0;
     }
+/*@=branchstate@*/
 
     return result;
 }
@@ -1220,6 +1252,7 @@ fprintf(stderr, "*** rpmts_Next(%p) ts %p\n", s, s->ts);
 
 /**
  */
+/*@null@*/
 static rpmmiObject *
 rpmts_Match(rpmtsObject * s, PyObject * args)
        /*@globals rpmGlobalMacroContext @*/
@@ -1370,7 +1403,7 @@ static PyObject * rpmts_getattro(PyObject * o, PyObject * n)
 /** \ingroup py_c
  */
 static int rpmts_setattro(PyObject * o, PyObject * n, PyObject * v)
-       /*@modifies o @*/
+       /*@*/
 {
     rpmtsObject *s = (rpmtsObject *)o;
     char * name = PyString_AsString(n);
index 049976d..10d05d9 100644 (file)
@@ -13,6 +13,7 @@ typedef struct rpmtsObject_s {
     rpmts      ts;
     PyObject * keyList;                /* keeps reference counts correct */
     FD_t scriptFd;
+/*@relnull@*/
     rpmtsi tsi;
     rpmElementType tsiFilter;
     rpmprobFilterFlags ignoreSet;
index e5af618..5eb6156 100644 (file)
@@ -52,7 +52,7 @@
 -usedef                        # 9
 
 # --- not-yet at standard level
--boolops               # 116
+-boolops               # 117
 +boolint               # 11
 +charint               # 146
 +ignorequals           # 112