ruby-changes:21489
From: akr <ko1@a...>
Date: Fri, 28 Oct 2011 00:12:38 +0900 (JST)
Subject: [ruby-changes:21489] akr:r33538 (trunk): * ext/sdbm/_sdbm.c (sdbm_prep): refactored for less nesting.
akr 2011-10-28 00:11:06 +0900 (Fri, 28 Oct 2011) New Revision: 33538 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=33538 Log: * ext/sdbm/_sdbm.c (sdbm_prep): refactored for less nesting. Modified files: trunk/ChangeLog trunk/ext/sdbm/_sdbm.c Index: ChangeLog =================================================================== --- ChangeLog (revision 33537) +++ ChangeLog (revision 33538) @@ -1,3 +1,7 @@ +Fri Oct 28 00:09:31 2011 Tanaka Akira <akr@f...> + + * ext/sdbm/_sdbm.c (sdbm_prep): refactored for less nesting. + Thu Oct 27 18:28:18 2011 Nobuyoshi Nakada <nobu@r...> * configure.in (RUBY_DEFINE_IF): revert r33534 partially to get Index: ext/sdbm/_sdbm.c =================================================================== --- ext/sdbm/_sdbm.c (revision 33537) +++ ext/sdbm/_sdbm.c (revision 33538) @@ -187,6 +187,8 @@ if ((db = (DBM *) malloc(sizeof(DBM))) == NULL) return errno = ENOMEM, (DBM *) NULL; + db->pagf = -1; + db->dirf = -1; db->flags = 0; db->hmask = 0; db->blkptr = 0; @@ -205,31 +207,33 @@ * If we fail anywhere, undo everything, return NULL. */ flags |= O_BINARY; - if ((db->pagf = open(pagname, flags, mode)) > -1) { - if ((db->dirf = open(dirname, flags, mode)) > -1) { + + if ((db->pagf = open(pagname, flags, mode)) == -1) goto err; + if ((db->dirf = open(dirname, flags, mode)) == -1) goto err; /* * need the dirfile size to establish max bit number. */ - if (fstat(db->dirf, &dstat) == 0) { + if (fstat(db->dirf, &dstat) == -1) goto err; /* * zero size: either a fresh database, or one with a single, * unsplit data page: dirpage is all zeros. */ - db->dirbno = (!dstat.st_size) ? 0 : -1; - db->pagbno = -1; - db->maxbno = dstat.st_size * (long) BYTESIZ; + db->dirbno = (!dstat.st_size) ? 0 : -1; + db->pagbno = -1; + db->maxbno = dstat.st_size * (long) BYTESIZ; - (void) memset(db->pagbuf, 0, PBLKSIZ); - (void) memset(db->dirbuf, 0, DBLKSIZ); - /* - * success - */ - return db; - } - (void) close(db->dirf); - } - (void) close(db->pagf); - } + (void) memset(db->pagbuf, 0, PBLKSIZ); + (void) memset(db->dirbuf, 0, DBLKSIZ); +/* + * success + */ + return db; + + err: + if (db->pagf != -1) + (void) close(db->pagf); + if (db->dirf != -1) + (void) close(db->dirf); free((char *) db); return (DBM *) NULL; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/