empty_p: optimize and warnings

* ext/dbm/dbm.c (fdbm_empty_p): not empty if first key exists.
  suppress warnngs by gcc 4.7 -Wstrict-overflow.
* ext/sdbm/init.c (fsdbm_empty_p): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36438 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2012-07-18 07:44:17 +00:00
parent 5a03c25690
commit f9c014d008
2 changed files with 8 additions and 10 deletions

View file

@ -689,22 +689,21 @@ fdbm_empty_p(VALUE obj)
datum key; datum key;
struct dbmdata *dbmp; struct dbmdata *dbmp;
DBM *dbm; DBM *dbm;
int i = 0;
GetDBM2(obj, dbmp, dbm); GetDBM2(obj, dbmp, dbm);
if (dbmp->di_size < 0) { if (dbmp->di_size < 0) {
dbm = dbmp->di_dbm; dbm = dbmp->di_dbm;
for (key = dbm_firstkey(dbm); key.dptr; key = dbm_nextkey(dbm)) { for (key = dbm_firstkey(dbm); key.dptr; key = dbm_nextkey(dbm)) {
i++; return Qfalse;
} }
} }
else { else {
i = (int)dbmp->di_size; if (!dbmp->di_size)
}
if (i == 0) return Qtrue;
return Qfalse; return Qfalse;
} }
return Qtrue;
}
/* /*
* call-seq: * call-seq:

View file

@ -714,22 +714,21 @@ fsdbm_empty_p(VALUE obj)
datum key; datum key;
struct dbmdata *dbmp; struct dbmdata *dbmp;
DBM *dbm; DBM *dbm;
int i = 0;
GetDBM(obj, dbmp); GetDBM(obj, dbmp);
if (dbmp->di_size < 0) { if (dbmp->di_size < 0) {
dbm = dbmp->di_dbm; dbm = dbmp->di_dbm;
for (key = sdbm_firstkey(dbm); key.dptr; key = sdbm_nextkey(dbm)) { for (key = sdbm_firstkey(dbm); key.dptr; key = sdbm_nextkey(dbm)) {
i++; return Qfalse;
} }
} }
else { else {
i = dbmp->di_size; if (!dbmp->di_size)
}
if (i == 0) return Qtrue;
return Qfalse; return Qfalse;
} }
return Qtrue;
}
/* /*
* call-seq: * call-seq: