RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: [email protected] Module: rpm Date: 17-May-2009 20:11:57 Branch: HEAD Handle: 2009051718115700 Modified files: rpm/rpmdb header.c Log: - fix: disable hdr_fastdatalength for headerGet(RPMTAG_HEADERIMMUTABLE). Summary: Revision Changes Path 1.180 +10 -2 rpm/rpmdb/header.c ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/rpmdb/header.c ============================================================================ $ cvs diff -u -r1.179 -r1.180 header.c --- rpm/rpmdb/header.c 15 May 2009 23:48:48 -0000 1.179 +++ rpm/rpmdb/header.c 17 May 2009 18:11:57 -0000 1.180 @@ -34,7 +34,7 @@ /* Swab tag data only when accessed through headerGet()? */ /*...@unchecked@*/ -int _hdr_lazytagswab = 1; +int _hdr_lazytagswab = 0; /** \ingroup header */ @@ -499,6 +499,14 @@ size_t tdel = 0; size_t tl = dl; struct indexEntry_s ieprev; + int _fast = _hdr_fastdatalength; + + /* XXX il = 1 needs dataEnd != NULL for sizing */ + if (il == 1 && dataEnd == NULL) _fast = 0; + /* XXX headerGet() for RPMTAG_HEADERIMMUTABLE (at least) */ + if (entry == NULL && regionid == 0) _fast = 0; + + assert(dl == 0); /* XXX eliminate dl argument (its always 0) */ memset(&ieprev, 0, sizeof(ieprev)); for (; il > 0; il--, pe++) { @@ -528,7 +536,7 @@ pend.ui8p = (rpmuint8_t *) dataEnd; /* Find the length of the tag data store. */ - if (dataEnd && _hdr_fastdatalength) { + if (_fast) { /* Compute the tag data store length using offsets. */ if (il > 1) ie.length = ((rpmuint32_t) ntohl(pe[1].offset) - ie.info.offset); @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository [email protected]
