diff options
| author | Matthew Barnes <mbarnes@redhat.com> | 2007-10-19 21:34:15 +0000 |
|---|---|---|
| committer | Matthew Barnes <mbarnes@src.gnome.org> | 2007-10-19 21:34:15 +0000 |
| commit | b296207eb4b57da3bd883e430022c3533ac3a976 (patch) | |
| tree | 64cdba38082191f9dc5edfce5499daae7f57c7ca | |
| parent | b9072da6043aa3cde94d9632b00160312dbf64ee (diff) | |
| download | evolution-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/ChangeLog | 9 | ||||
| -rw-r--r-- | addressbook/backends/file/e-book-backend-file.c | 19 |
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); |
