Blob Blame History Raw
diff -up evolution-data-server-1.12.1/addressbook/backends/file/e-book-backend-file.c.db4 evolution-data-server-1.12.1/addressbook/backends/file/e-book-backend-file.c
--- evolution-data-server-1.12.1/addressbook/backends/file/e-book-backend-file.c.db4	2007-10-12 02:29:47.000000000 -0400
+++ evolution-data-server-1.12.1/addressbook/backends/file/e-book-backend-file.c	2007-10-19 11:56:03.000000000 -0400
@@ -1137,23 +1137,30 @@ e_book_backend_file_load_source (EBookBa
 			return db_error_to_status (db_error);
 		}
 
+		db->close (db, 0);
+		db_error = db_create (&db, env, 0);
+		if (db_error != 0) {
+			g_warning ("db_create failed with %s", db_strerror (db_error));
+			g_free (dirname);
+			g_free (filename);
+			return db_error_to_status (db_error);
+		}
+
 		db_error = (*db->open) (db, NULL, filename, NULL, DB_HASH, DB_THREAD, 0666);
 	}
 
-	bf->priv->file_db = db;
-
 	if (db_error == 0) {
 		writable = TRUE;
 	} else {
 		db->close (db, 0);
-		
         	db_error = db_create (&db, env, 0);
         	if (db_error != 0) {
                 	g_warning ("db_create failed with %s", db_strerror (db_error));
                 	g_free (dirname);
                 	g_free (filename);
-                	return GNOME_Evolution_Addressbook_OtherError;
+                	return db_error_to_status (db_error);
         	}
+
 		db_error = (*db->open) (db, NULL, filename, NULL, DB_HASH, DB_RDONLY | DB_THREAD, 0666);
 
 		if (db_error != 0 && !only_if_exists) {
@@ -1178,7 +1185,7 @@ e_book_backend_file_load_source (EBookBa
  				g_warning ("db_create failed with %s", db_strerror (db_error));
 				g_free (dirname);
 				g_free (filename);
-				return GNOME_Evolution_Addressbook_OtherError;
+				return db_error_to_status (db_error);
 			}
 
 			db_error = (*db->open) (db, NULL, filename, NULL, DB_HASH, DB_CREATE | DB_THREAD, 0666);
@@ -1201,6 +1208,8 @@ e_book_backend_file_load_source (EBookBa
 		}
 	}
 
+	bf->priv->file_db = db;
+	
 	if (db_error != 0) {
 		bf->priv->file_db = NULL;
 		g_free (dirname);