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]

Reply via email to