RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   24-Mar-2009 18:52:33
  Branch: HEAD                             Handle: 2009032417523201

  Modified files:
    rpm                     CHANGES
    rpm/lib                 rpmds.c

  Log:
    - jbj: yarn: wire up rpmdsFini, mark rpmdsFree for destruction.

  Summary:
    Revision    Changes     Path
    1.2867      +1  -0      rpm/CHANGES
    2.137       +22 -33     rpm/lib/rpmds.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.2866 -r1.2867 CHANGES
  --- rpm/CHANGES       24 Mar 2009 17:22:53 -0000      1.2866
  +++ rpm/CHANGES       24 Mar 2009 17:52:32 -0000      1.2867
  @@ -1,5 +1,6 @@
   
   5.2a3 -> 5.2a4:
  +    - jbj: yarn: wire up rpmdsFini, mark rpmdsFree for destruction.
       - jbj: yarn: wire up rpmtsFini, mark rpmtsFree for destruction.
       - jbj: yarn: for now, don't assert fail, just print FIXME.
       - jbj: yarn: wire up headerScrub, eliminate header{Link,Unlink}.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmds.c
  ============================================================================
  $ cvs diff -u -r2.136 -r2.137 rpmds.c
  --- rpm/lib/rpmds.c   20 Mar 2009 18:28:33 -0000      2.136
  +++ rpm/lib/rpmds.c   24 Mar 2009 17:52:33 -0000      2.137
  @@ -122,22 +122,6 @@
   int _rpmds_unspecified_epoch_noise = 0;
   /*...@=exportheadervar@*/
   
  -/*...@unchecked@*/ /*...@null@*/
  -rpmioPool _rpmdsPool;
  -
  -static rpmds rpmdsGetPool(/*...@null@*/ rpmioPool pool)
  -     /*...@modifies pool @*/
  -{
  -    rpmds ds;
  -
  -    if (_rpmdsPool == NULL) {
  -     _rpmdsPool = rpmioNewPool("ds", sizeof(*ds), -1, _rpmds_debug,
  -                     NULL, NULL, NULL);
  -     pool = _rpmdsPool;
  -    }
  -    return (rpmds) rpmioGetPool(pool, sizeof(*ds));
  -}
  -
   /**
    * Return dependency set type string.
    * @param tagN               dependency set tag
  @@ -172,21 +156,9 @@
       return rpmdsTagName(rpmdsTagN(ds));
   }
   
  -rpmds rpmdsFree(rpmds ds)
  +static void rpmdsFini(void * _ds)
   {
  -    if (ds == NULL)
  -     return NULL;
  -
  -    yarnPossess(ds->_item.use);
  -/*...@-modfilesys@*/
  -if (_rpmds_debug)
  -fprintf(stderr, "--> ds %p -- %ld %s at %s:%u\n", ds, 
yarnPeekLock(ds->_item.use), ds->Type, __FILE__, __LINE__);
  -/*...@=modfilesys@*/
  -    if (yarnPeekLock(ds->_item.use) <= 1L) {
  -/*...@-modfilesys@*/
  -if (_rpmds_debug < 0)
  -fprintf(stderr, "*** ds %p\t%s[%d]\n", ds, ds->Type, ds->Count);
  -/*...@=modfilesys@*/
  +    rpmds ds = _ds;
   
        if (ds->Count > 0) {
            ds->N = _free(ds->N);
  @@ -204,13 +176,30 @@
        ds->Result = _free(ds->Result);
        ds->exclude = mireFreeAll(ds->exclude, ds->nexclude);
        ds->include = mireFreeAll(ds->include, ds->ninclude);
  +}
   
  -     ds = (rpmds) rpmioPutPool((rpmioItem)ds);
  -    } else
  -     yarnTwist(ds->_item.use, BY, -1);
  +rpmds rpmdsFree(rpmds ds)
  +{
  +    (void)rpmioFreePoolItem((rpmioItem)ds, __FUNCTION__, __FILE__, __LINE__);
       return NULL;
   }
   
  +/*...@unchecked@*/ /*...@null@*/
  +rpmioPool _rpmdsPool;
  +
  +static rpmds rpmdsGetPool(/*...@null@*/ rpmioPool pool)
  +     /*...@modifies pool @*/
  +{
  +    rpmds ds;
  +
  +    if (_rpmdsPool == NULL) {
  +     _rpmdsPool = rpmioNewPool("ds", sizeof(*ds), -1, _rpmds_debug,
  +                     NULL, NULL, rpmdsFini);
  +     pool = _rpmdsPool;
  +    }
  +    return (rpmds) rpmioGetPool(pool, sizeof(*ds));
  +}
  +
   static /*...@null@*/
   const char ** rpmdsDupArgv(/*...@null@*/ const char ** argv, int argc)
        /*...@*/
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to