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