RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmdb.c

From: Jeff Johnson <jbj@rpm5.org>
Date: Mon 15 Oct 2007 - 09:02:27 CEST
Message-Id: <20071015070227.657F834847A@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  jbj@rpm5.org
  Module: rpm                              Date:   15-Oct-2007 09:02:27
  Branch: HEAD                             Handle: 2007101508022601

  Modified files:
    rpm                     CHANGES
    rpm/rpmdb               rpmdb.c

  Log:
    - fix: typo broke i32p indices when sizeof(void *) != sizeof(int_32).
    - add RPM_INT64_TYPE rpmdb indices (untested).
    - ah, there's the rpmdb basenames memory leak (but leave disabled).

  Summary:
    Revision    Changes     Path
    1.1710      +3  -0      rpm/CHANGES
    1.183       +23 -6      rpm/rpmdb/rpmdb.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1709 -r1.1710 CHANGES
  --- rpm/CHANGES	15 Oct 2007 05:59:54 -0000	1.1709
  +++ rpm/CHANGES	15 Oct 2007 07:02:26 -0000	1.1710
  @@ -1,4 +1,7 @@
   4.5 -> 5.0:
  +    - jbj: fix: typo broke i32p indices when sizeof(void *) != sizeof(int_32).
  +    - jbj: add RPM_INT64_TYPE rpmdb indices (untested).
  +    - jbj: ah, there's the rpmdb basenames memory leak (but leave disabled).
       - jbj: mark (and disable) rpmv3 Provides: N = E:V-R retrofit.
       - jbj: mark (and disable) rpmv3 basenames hacks (likely fixing rpmdb leak).
       - jbj: ditto for python/* too.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.c
  ============================================================================
  $ cvs diff -u -r1.182 -r1.183 rpmdb.c
  --- rpm/rpmdb/rpmdb.c	15 Oct 2007 05:59:54 -0000	1.182
  +++ rpm/rpmdb/rpmdb.c	15 Oct 2007 07:02:27 -0000	1.183
  @@ -2924,6 +2924,9 @@
   		/* Identify value pointer and length. */
   		stringvalued = 0;
   		switch (he_t) {
  +		case RPM_NULL_TYPE:		/* XXX never occurs. */
  +assert(0);
  +		    break;
   		case RPM_CHAR_TYPE:
   		case RPM_INT8_TYPE:
   		    key->size = sizeof(*he_p.i8p);
  @@ -2934,16 +2937,22 @@
   		    key->data = he_p.i16p + i;
   		    /*@switchbreak@*/ break;
   		case RPM_INT32_TYPE:
  -		    key->size = sizeof(he_p.i32p);
  +		    key->size = sizeof(*he_p.i32p);
   		    key->data = he_p.i32p + i;
   		    /*@switchbreak@*/ break;
  +		case RPM_INT64_TYPE:
  +		    key->size = sizeof(*he_p.i64p);
  +		    key->data = he_p.i64p + i;
  +		    /*@switchbreak@*/ break;
  +		case RPM_OPENPGP_TYPE:
  +		case RPM_ASN1_TYPE:
   		case RPM_BIN_TYPE:
   		    key->size = he_c;
   		    key->data = he_p.ptr;
   		    he_c = 1;		/* XXX break out of loop. */
   		    /*@switchbreak@*/ break;
  +		case RPM_I18NSTRING_TYPE:	/* XXX never occurs. */
   		case RPM_STRING_TYPE:
  -		case RPM_I18NSTRING_TYPE:
   		    he_c = 1;		/* XXX break out of loop. */
   		    /*@fallthrough@*/
   		case RPM_STRING_ARRAY_TYPE:
  @@ -3097,10 +3106,10 @@
       sigset_t signalMask;
   #if defined(SUPPORT_RPMV3_BASENAMES_HACKS)
       const char ** baseNames;
  +    int count = 0;
   #endif
       const char ** dirNames;
       uint_32 * dirIndexes;
  -    int count = 0;
       dbiIndex dbi;
       int dbix;
       union _dbswap mi_offset;
  @@ -3144,6 +3153,7 @@
       he->tag = RPMTAG_BASENAMES;
       xx = hge(h, he->tag, he->t, he->p, he->c);
       baseNames = he_p.argv;
  +    count = he_c;
   #endif
       he->tag = RPMTAG_DIRNAMES;
       xx = hge(h, he->tag, he->t, he->p, he->c);
  @@ -3397,7 +3407,9 @@
   		/* Identify value pointer and length. */
   		stringvalued = 0;
   		switch (he_t) {
  -/*@-sizeoftype@*/
  +		case RPM_NULL_TYPE:		/* XXX never occurs. */
  +assert(0);
  +		    break;
   		case RPM_CHAR_TYPE:
   		case RPM_INT8_TYPE:
   		    key->size = sizeof(*he_p.i8p);
  @@ -3411,14 +3423,19 @@
   		    key->size = sizeof(*he_p.i32p);
   /*@i@*/		    key->data = he_p.i32p + i;
   		    /*@switchbreak@*/ break;
  -/*@=sizeoftype@*/
  +		case RPM_INT64_TYPE:
  +		    key->size = sizeof(*he_p.i64p);
  +/*@i@*/		    key->data = he_p.i64p + i;
  +		    /*@switchbreak@*/ break;
  +		case RPM_OPENPGP_TYPE:
  +		case RPM_ASN1_TYPE:
   		case RPM_BIN_TYPE:
   		    key->size = he_c;
   /*@i@*/		    key->data = he_p.ptr;
   		    he_c = 1;		/* XXX break out of loop. */
   		    /*@switchbreak@*/ break;
  +		case RPM_I18NSTRING_TYPE:	/* XXX never occurs */
   		case RPM_STRING_TYPE:
  -		case RPM_I18NSTRING_TYPE:
   		    he_c = 1;		/* XXX break out of loop. */
   		    /*@fallthrough@*/
   		case RPM_STRING_ARRAY_TYPE:
  @@ .
Received on Mon Oct 15 09:02:27 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.