svn commit: r190344 - head/lib/libc/db/btree

Xin LI delphij at FreeBSD.org
Mon Mar 23 16:43:09 PDT 2009


Author: delphij
Date: Mon Mar 23 23:43:07 2009
New Revision: 190344
URL: http://svn.freebsd.org/changeset/base/190344

Log:
  Save errno before calling _close(), which may clear it.
  
  Obtained from:	OpenBSD

Modified:
  head/lib/libc/db/btree/bt_open.c

Modified: head/lib/libc/db/btree/bt_open.c
==============================================================================
--- head/lib/libc/db/btree/bt_open.c	Mon Mar 23 23:32:20 2009	(r190343)
+++ head/lib/libc/db/btree/bt_open.c	Mon Mar 23 23:43:07 2009	(r190344)
@@ -96,7 +96,7 @@ __bt_open(const char *fname, int flags, 
 	DB *dbp;
 	pgno_t ncache;
 	ssize_t nr;
-	int machine_lorder;
+	int machine_lorder, saved_errno;
 
 	t = NULL;
 
@@ -327,13 +327,15 @@ einval:	errno = EINVAL;
 eftype:	errno = EFTYPE;
 	goto err;
 
-err:	if (t) {
+err:	saved_errno = errno;
+	if (t) {
 		if (t->bt_dbp)
 			free(t->bt_dbp);
 		if (t->bt_fd != -1)
 			(void)_close(t->bt_fd);
 		free(t);
 	}
+	errno = saved_errno;
 	return (NULL);
 }
 


More information about the svn-src-all mailing list