RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Alexey Tourbin
Root: /v/rpm/cvs Email: at@rpm5.org
Module: rpm Date: 07-Aug-2008 20:40:13
Branch: HEAD Handle: 2008080718401300
Modified files:
rpm/rpmdb rpmdb.c rpmdb.h
Log:
rpmdb: introduced DBT_INIT for on-stack DBT structures
Summary:
Revision Changes Path
1.259 +7 -10 rpm/rpmdb/rpmdb.c
1.80 +4 -0 rpm/rpmdb/rpmdb.h
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/rpmdb/rpmdb.c
============================================================================
$ cvs diff -u -r1.258 -r1.259 rpmdb.c
--- rpm/rpmdb/rpmdb.c 3 Aug 2008 14:01:00 -0000 1.258
+++ rpm/rpmdb/rpmdb.c 7 Aug 2008 18:40:13 -0000 1.259
@@ -1578,9 +1578,9 @@
int rpmdbCount(rpmdb db, rpmTag tag, const void * keyp, size_t keylen)
{
-DBC * dbcursor = NULL;
-DBT * key = alloca(sizeof(*key));
-DBT * data = alloca(sizeof(*data));
+ DBC * dbcursor = NULL;
+ DBT k = DBT_INIT;
+ DBT v = DBT_INIT;
dbiIndex dbi;
int rc;
int xx;
@@ -1588,9 +1588,6 @@
if (db == NULL || keyp == NULL)
return 0;
-memset(key, 0, sizeof(*key));
-memset(data, 0, sizeof(*data));
-
dbi = dbiOpen(db, tag, 0);
if (dbi == NULL)
return 0;
@@ -1599,12 +1596,12 @@
keylen = strlen(keyp);
/*@-temptrans@*/
-key->data = (void *) keyp;
+ k.data = (void *) keyp;
/*@=temptrans@*/
-key->size = (UINT32_T) keylen;
+ k.size = (UINT32_T) keylen;
xx = dbiCopen(dbi, dbi->dbi_txnid, &dbcursor, 0);
- rc = dbiGet(dbi, dbcursor, key, data, DB_SET);
+ rc = dbiGet(dbi, dbcursor, &k, &v, DB_SET);
#ifndef SQLITE_HACK
xx = dbiCclose(dbi, dbcursor, 0);
dbcursor = NULL;
@@ -1614,7 +1611,7 @@
dbiIndexSet matches;
/*@-nullpass@*/ /* FIX: matches might be NULL */
matches = NULL;
- (void) dbt2set(dbi, data, &matches);
+ (void) dbt2set(dbi, &v, &matches);
if (matches) {
rc = dbiIndexSetCount(matches);
matches = dbiFreeIndexSet(matches);
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/rpmdb.h
============================================================================
$ cvs diff -u -r1.79 -r1.80 rpmdb.h
--- rpm/rpmdb/rpmdb.h 2 Aug 2008 16:36:10 -0000 1.79
+++ rpm/rpmdb/rpmdb.h 7 Aug 2008 18:40:13 -0000 1.80
@@ -18,6 +18,10 @@
#endif
#endif
+#if defined(_RPMDB_INTERNAL)
+#define DBT_INIT {0} /* -Wno-missing-field-initializers */
+#endif
+
/*@-exportlocal@*/
/*@unchecked@*/
extern int _rpmdb_debug;
@@ .
Received on Thu Aug 7 20:40:14 2008