summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2007-10-19 21:34:15 +0000
committerMatthew Barnes <mbarnes@src.gnome.org>2007-10-19 21:34:15 +0000
commitb296207eb4b57da3bd883e430022c3533ac3a976 (patch)
tree64cdba38082191f9dc5edfce5499daae7f57c7ca
parentb9072da6043aa3cde94d9632b00160312dbf64ee (diff)
downloadevolution-data-server-b296207eb4b57da3bd883e430022c3533ac3a976.tar.gz
** Fixes bug #488351
2007-10-19 Matthew Barnes <mbarnes@redhat.com> ** Fixes bug #488351 * addressbook/backends/file/e-book-backend-file.c (e_book_backend_file_load_source): Don't reopen a database using the same DB handle. Prevents an error dialog from appearing in Contacts after a fresh install. svn path=/branches/gnome-2-20/; revision=8122
-rw-r--r--addressbook/ChangeLog9
-rw-r--r--addressbook/backends/file/e-book-backend-file.c19
2 files changed, 23 insertions, 5 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index 7a00edef0..2c75808f0 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,12 @@
+2007-10-19 Matthew Barnes <mbarnes@redhat.com>
+
+ ** Fixes bug #488351
+
+ * backends/file/e-book-backend-file.c
+ (e_book_backend_file_load_source):
+ Don't reopen a database using the same DB handle. Prevents an
+ error dialog from appearing in Contacts after a fresh install.
+
2007-10-11 Milan Crha <mcrha@redhat.com>
** Fix for bug #420167
diff --git a/addressbook/backends/file/e-book-backend-file.c b/addressbook/backends/file/e-book-backend-file.c
index ad47ea646..cf079821f 100644
--- a/addressbook/backends/file/e-book-backend-file.c
+++ b/addressbook/backends/file/e-book-backend-file.c
@@ -1137,23 +1137,30 @@ e_book_backend_file_load_source (EBookBackend *backend,
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 (EBookBackend *backend,
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 (EBookBackend *backend,
}
}
+ bf->priv->file_db = db;
+
if (db_error != 0) {
bf->priv->file_db = NULL;
g_free (dirname);