[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]