diff options
Diffstat (limited to 'addressbook/libedata-book/e-book-backend.c')
-rw-r--r-- | addressbook/libedata-book/e-book-backend.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/addressbook/libedata-book/e-book-backend.c b/addressbook/libedata-book/e-book-backend.c index 217a5428f..3db105ac3 100644 --- a/addressbook/libedata-book/e-book-backend.c +++ b/addressbook/libedata-book/e-book-backend.c @@ -3047,19 +3047,25 @@ e_book_backend_is_readonly (EBookBackend *backend) * Tries to create an #EDataBookDirect for @backend if * backend supports direct read access. * - * Returns: (transfer full): A new #EDataBookDirect object, or %NULL if @backend does not support direct access + * Returns: (transfer full): A new #EDataBookDirect object, or %NULL if + * @backend does not support direct access * * Since: 3.8 */ EDataBookDirect * e_book_backend_get_direct_book (EBookBackend *backend) { + EBookBackendClass *class; + EDataBookDirect *direct_book = NULL; + g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), NULL); - if (E_BOOK_BACKEND_GET_CLASS (backend)->get_direct_book) - return E_BOOK_BACKEND_GET_CLASS (backend)->get_direct_book (backend); + class = E_BOOK_BACKEND_GET_CLASS (backend); + + if (class->get_direct_book != NULL) + direct_book = class->get_direct_book (backend); - return NULL; + return direct_book; } /** |