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