diff options
| author | Milan Crha <mcrha@redhat.com> | 2018-05-17 15:45:03 +0200 |
|---|---|---|
| committer | Milan Crha <mcrha@redhat.com> | 2018-05-17 15:45:03 +0200 |
| commit | d3900f99b9479ece5c12459c9bd163793726911c (patch) | |
| tree | c650ac4ddae8e942a92fbadd825b2bd4a920f779 | |
| parent | 3d7ee164c1c598f302729e0bd24a86418f245f2c (diff) | |
| download | evolution-data-server-d3900f99b9479ece5c12459c9bd163793726911c.tar.gz | |
Address some of the compiler and static analyzers warnings
77 files changed, 1162 insertions, 473 deletions
diff --git a/iconv-detect.c b/iconv-detect.c index e44ad94e3..8cb467328 100644 --- a/iconv-detect.c +++ b/iconv-detect.c @@ -50,8 +50,8 @@ enum { typedef struct { - char *charset; - char *format; + const char *charset; + const char *format; int id; } CharInfo; @@ -90,8 +90,8 @@ static int num_iso10646_tests = sizeof (iso10646_tests) / sizeof (CharInfo); static int test_iconv (void) { - char *jp = "\x1B\x24\x42\x46\x7C\x4B\x5C\x38\x6C"; - char *utf8 = "\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E"; + char *jp = (char *) "\x1B\x24\x42\x46\x7C\x4B\x5C\x38\x6C"; + const char *utf8 = "\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E"; char *transbuf = malloc (10), *trans = transbuf; iconv_t cd; size_t jp_len = strlen (jp), utf8_len = 10; diff --git a/src/addressbook/backends/file/e-book-backend-file.c b/src/addressbook/backends/file/e-book-backend-file.c index a25e5c1ae..18efecb50 100644 --- a/src/addressbook/backends/file/e-book-backend-file.c +++ b/src/addressbook/backends/file/e-book-backend-file.c @@ -953,9 +953,9 @@ uid_rev_fields (GHashTable *fields_of_interest) } static gpointer -book_view_thread (gpointer data) +book_view_thread (gpointer user_data) { - EDataBookView *book_view; + EDataBookView *book_view = user_data; FileBackendSearchClosure *closure; EBookBackendFile *bf; EBookBackendSExp *sexp; @@ -965,9 +965,8 @@ book_view_thread (gpointer data) GError *local_error = NULL; gboolean meta_contact, success; - g_return_val_if_fail (E_IS_DATA_BOOK_VIEW (data), NULL); + g_return_val_if_fail (E_IS_DATA_BOOK_VIEW (book_view), NULL); - book_view = data; closure = get_closure (book_view); if (!closure) { g_warning (G_STRLOC ": NULL closure in book view thread"); diff --git a/src/addressbook/libebook-contacts/e-address-western.c b/src/addressbook/libebook-contacts/e-address-western.c index 0618fcb2a..3dc5d7284 100644 --- a/src/addressbook/libebook-contacts/e-address-western.c +++ b/src/addressbook/libebook-contacts/e-address-western.c @@ -357,6 +357,8 @@ e_address_western_parse (const gchar *in_address) lineindex++; } + lines[linecntr] = NULL; + /* Convert the newlines at the end of each line (except the last, because it is already NULL terminated) to NULLs. */ for (cntr = 0; cntr < (linecntr - 1); cntr++) { diff --git a/src/addressbook/libebook-contacts/e-name-western.c b/src/addressbook/libebook-contacts/e-name-western.c index 7c91d59e8..bf6decc69 100644 --- a/src/addressbook/libebook-contacts/e-name-western.c +++ b/src/addressbook/libebook-contacts/e-name-western.c @@ -406,7 +406,7 @@ e_name_western_extract_nickname (ENameWestern *name, if (idxs->first_idx == -1) return; - if (idxs->middle_idx > idxs->first_idx) + if (idxs->middle_idx > idxs->first_idx && name->middle) nick = name->full + idxs->middle_idx + strlen (name->middle); else nick = name->full + idxs->first_idx + strlen (name->first); diff --git a/src/addressbook/libebook/e-book-client.c b/src/addressbook/libebook/e-book-client.c index 4ac34295e..2c0557c3c 100644 --- a/src/addressbook/libebook/e-book-client.c +++ b/src/addressbook/libebook/e-book-client.c @@ -1997,8 +1997,9 @@ e_book_client_get_self (ESourceRegistry *registry, /* Don't care about errors because * we'll create a new card on failure. */ /* coverity[unchecked_value] */ - e_book_client_get_contact_sync ( - book_client, uid, &contact, NULL, NULL); + if (!e_book_client_get_contact_sync (book_client, uid, &contact, NULL, NULL)) + contact = NULL; + g_free (uid); if (contact != NULL) { diff --git a/src/addressbook/libebook/e-destination.c b/src/addressbook/libebook/e-destination.c index bbe4aefd6..9381599c8 100644 --- a/src/addressbook/libebook/e-destination.c +++ b/src/addressbook/libebook/e-destination.c @@ -467,7 +467,7 @@ e_destination_set_contact (EDestination *dest, } if (type != NONE && parent_dest) { gchar *id = NULL; - gint email_num = 0; + gint set_email_num = 0; EDestination *s_dest; s_dest = e_destination_new (); @@ -482,7 +482,7 @@ e_destination_set_contact (EDestination *dest, id = value ? g_strdup (value->data) : NULL; } else if (g_ascii_strcasecmp (param_name, EVC_X_DEST_EMAIL_NUM) == 0) { value = e_vcard_attribute_param_get_values (param->data); - email_num = value ? atoi (value->data) : -1; + set_email_num = value ? atoi (value->data) : -1; } else if (!g_ascii_strcasecmp (param_name, EVC_X_DEST_HTML_MAIL)) { value = e_vcard_attribute_param_get_values (param->data); e_destination_set_html_mail_pref (s_dest, value ? !g_ascii_strcasecmp (value->data, "true") : FALSE); @@ -519,7 +519,7 @@ e_destination_set_contact (EDestination *dest, } if (id) { - e_destination_set_contact_uid (s_dest, id, email_num); + e_destination_set_contact_uid (s_dest, id, set_email_num); g_free (id); } diff --git a/src/addressbook/libedata-book/e-book-backend.c b/src/addressbook/libedata-book/e-book-backend.c index 5ab1e91d5..44143baa7 100644 --- a/src/addressbook/libedata-book/e-book-backend.c +++ b/src/addressbook/libedata-book/e-book-backend.c @@ -560,6 +560,7 @@ static void book_backend_constructed (GObject *object) { EBookBackend *backend; + EBookBackendClass *class; ESourceRegistry *registry; ESource *source; gint max_threads = -1; @@ -569,13 +570,16 @@ book_backend_constructed (GObject *object) G_OBJECT_CLASS (e_book_backend_parent_class)->constructed (object); backend = E_BOOK_BACKEND (object); + class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); + registry = e_book_backend_get_registry (backend); source = e_backend_get_source (E_BACKEND (backend)); /* If the backend specifies a serial dispatch queue, create * a thread pool with one exclusive thread. The thread pool * will serialize operations for us. */ - if (E_BOOK_BACKEND_GET_CLASS (backend)->use_serial_dispatch_queue) { + if (class->use_serial_dispatch_queue) { max_threads = 1; exclusive = TRUE; } @@ -676,6 +680,7 @@ book_backend_get_contact_list_uids_sync (EBookBackend *backend, gboolean success; class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->get_contact_list_sync != NULL, FALSE); success = class->get_contact_list_sync ( @@ -1135,6 +1140,7 @@ book_backend_open_thread (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->open_sync != NULL); if (!e_book_backend_is_opened (backend)) { @@ -1167,6 +1173,7 @@ book_backend_open_thread_old_style (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->open != NULL); data_book = e_book_backend_ref_data_book (backend); @@ -1217,6 +1224,7 @@ e_book_backend_open (EBookBackend *backend, g_return_if_fail (E_IS_BOOK_BACKEND (backend)); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); simple = g_simple_async_result_new ( G_OBJECT (backend), callback, @@ -1343,6 +1351,7 @@ book_backend_refresh_thread (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->refresh_sync != NULL); if (!e_book_backend_is_opened (backend)) { @@ -1380,6 +1389,7 @@ book_backend_refresh_thread_old_style (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->refresh != NULL); data_book = e_book_backend_ref_data_book (backend); @@ -1433,6 +1443,7 @@ e_book_backend_refresh (EBookBackend *backend, g_return_if_fail (E_IS_BOOK_BACKEND (backend)); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); simple = g_simple_async_result_new ( G_OBJECT (backend), callback, @@ -1565,6 +1576,7 @@ book_backend_create_contacts_thread (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->create_contacts_sync != NULL); async_context = g_simple_async_result_get_op_res_gpointer (simple); @@ -1609,6 +1621,7 @@ book_backend_create_contacts_thread_old_style (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->create_contacts != NULL); data_book = e_book_backend_ref_data_book (backend); @@ -1680,6 +1693,7 @@ e_book_backend_create_contacts (EBookBackend *backend, g_return_if_fail (vcards != NULL); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); async_context = g_slice_new0 (AsyncContext); async_context->strv = g_strdupv ((gchar **) vcards); @@ -1829,6 +1843,7 @@ book_backend_modify_contacts_thread (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->modify_contacts_sync != NULL); async_context = g_simple_async_result_get_op_res_gpointer (simple); @@ -1873,6 +1888,7 @@ book_backend_modify_contacts_thread_old_style (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->modify_contacts != NULL); data_book = e_book_backend_ref_data_book (backend); @@ -1944,6 +1960,7 @@ e_book_backend_modify_contacts (EBookBackend *backend, g_return_if_fail (vcards != NULL); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); async_context = g_slice_new0 (AsyncContext); async_context->strv = g_strdupv ((gchar **) vcards); @@ -2087,6 +2104,7 @@ book_backend_remove_contacts_thread (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->remove_contacts_sync != NULL); async_context = g_simple_async_result_get_op_res_gpointer (simple); @@ -2130,6 +2148,7 @@ book_backend_remove_contacts_thread_old_style (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->remove_contacts != NULL); data_book = e_book_backend_ref_data_book (backend); @@ -2201,6 +2220,7 @@ e_book_backend_remove_contacts (EBookBackend *backend, g_return_if_fail (uids != NULL); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); async_context = g_slice_new0 (AsyncContext); async_context->strv = g_strdupv ((gchar **) uids); @@ -2345,6 +2365,7 @@ book_backend_get_contact_thread (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->get_contact_sync != NULL); async_context = g_simple_async_result_get_op_res_gpointer (simple); @@ -2388,6 +2409,7 @@ book_backend_get_contact_thread_old_style (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->get_contact != NULL); data_book = e_book_backend_ref_data_book (backend); @@ -2451,6 +2473,7 @@ e_book_backend_get_contact (EBookBackend *backend, g_return_if_fail (uid != NULL); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); async_context = g_slice_new0 (AsyncContext); async_context->uid = g_strdup (uid); @@ -2606,6 +2629,7 @@ book_backend_get_contact_list_thread (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->get_contact_list_sync != NULL); async_context = g_simple_async_result_get_op_res_gpointer (simple); @@ -2650,6 +2674,7 @@ book_backend_get_contact_list_thread_old_style (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->get_contact_list != NULL); data_book = e_book_backend_ref_data_book (backend); @@ -2714,6 +2739,7 @@ e_book_backend_get_contact_list (EBookBackend *backend, g_return_if_fail (query != NULL); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); async_context = g_slice_new0 (AsyncContext); async_context->query = g_strdup (query); @@ -2865,6 +2891,7 @@ book_backend_get_contact_list_uids_thread (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->get_contact_list_uids_sync != NULL); async_context = g_simple_async_result_get_op_res_gpointer (simple); @@ -2909,6 +2936,7 @@ book_backend_get_contact_list_uids_thread_old_style (GSimpleAsyncResult *simple, backend = E_BOOK_BACKEND (source_object); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->get_contact_list_uids != NULL); data_book = e_book_backend_ref_data_book (backend); @@ -2973,6 +3001,7 @@ e_book_backend_get_contact_list_uids (EBookBackend *backend, g_return_if_fail (query != NULL); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); async_context = g_slice_new0 (AsyncContext); async_context->query = g_strdup (query); @@ -3077,6 +3106,7 @@ e_book_backend_start_view (EBookBackend *backend, g_return_if_fail (E_IS_DATA_BOOK_VIEW (view)); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->start_view); class->start_view (backend, view); @@ -3099,6 +3129,7 @@ e_book_backend_stop_view (EBookBackend *backend, g_return_if_fail (E_IS_DATA_BOOK_VIEW (view)); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->stop_view != NULL); class->stop_view (backend, view); @@ -3221,6 +3252,7 @@ e_book_backend_get_backend_property (EBookBackend *backend, g_return_val_if_fail (prop_name != NULL, NULL); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_backend_property != NULL, NULL); return class->get_backend_property (backend, prop_name); @@ -3286,6 +3318,7 @@ e_book_backend_get_direct_book (EBookBackend *backend) g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), NULL); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, NULL); if (class->get_direct_book != NULL) direct_book = class->get_direct_book (backend); @@ -3313,10 +3346,15 @@ void e_book_backend_configure_direct (EBookBackend *backend, const gchar *config) { + EBookBackendClass *class; + g_return_if_fail (E_IS_BOOK_BACKEND (backend)); - if (E_BOOK_BACKEND_GET_CLASS (backend)->configure_direct) - E_BOOK_BACKEND_GET_CLASS (backend)->configure_direct (backend, config); + class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); + + if (class->configure_direct) + class->configure_direct (backend, config); } /** @@ -3332,14 +3370,20 @@ e_book_backend_configure_direct (EBookBackend *backend, void e_book_backend_sync (EBookBackend *backend) { + EBookBackendClass *class; + g_return_if_fail (E_IS_BOOK_BACKEND (backend)); - g_object_ref (backend); + class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); - if (E_BOOK_BACKEND_GET_CLASS (backend)->sync) - (* E_BOOK_BACKEND_GET_CLASS (backend)->sync) (backend); + if (class->sync) { + g_object_ref (backend); - g_object_unref (backend); + class->sync (backend); + + g_object_unref (backend); + } } /** @@ -3363,21 +3407,25 @@ e_book_backend_set_locale (EBookBackend *backend, GCancellable *cancellable, GError **error) { + EBookBackendClass *class; /* If the backend does not support locales, just happily return */ gboolean success = TRUE; g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), FALSE); - g_object_ref (backend); + class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, FALSE); + + if (class->set_locale) { + g_object_ref (backend); + + success = class->set_locale (backend, locale, cancellable, error); - if (E_BOOK_BACKEND_GET_CLASS (backend)->set_locale) { - success = (* E_BOOK_BACKEND_GET_CLASS (backend)->set_locale) (backend, locale, - cancellable, error); if (success) e_book_backend_notify_complete (backend); + g_object_unref (backend); } - g_object_unref (backend); return success; } @@ -3396,16 +3444,21 @@ e_book_backend_set_locale (EBookBackend *backend, gchar * e_book_backend_dup_locale (EBookBackend *backend) { + EBookBackendClass *class; gchar *locale = NULL; g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), NULL); - g_object_ref (backend); + class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, NULL); - if (E_BOOK_BACKEND_GET_CLASS (backend)->dup_locale) - locale = (* E_BOOK_BACKEND_GET_CLASS (backend)->dup_locale) (backend); + if (class->dup_locale) { + g_object_ref (backend); - g_object_unref (backend); + locale = class->dup_locale (backend); + + g_object_unref (backend); + } return locale; } @@ -3432,6 +3485,7 @@ e_book_backend_notify_update (EBookBackend *backend, g_return_if_fail (E_IS_CONTACT (contact)); class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->notify_update != NULL); class->notify_update (backend, contact); @@ -3628,26 +3682,27 @@ e_book_backend_create_cursor (EBookBackend *backend, guint n_fields, GError **error) { + EBookBackendClass *class; EDataBookCursor *cursor = NULL; g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), NULL); - g_object_ref (backend); + class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, NULL); - if (E_BOOK_BACKEND_GET_CLASS (backend)->create_cursor) - cursor = (* E_BOOK_BACKEND_GET_CLASS (backend)->create_cursor) (backend, - sort_fields, - sort_types, - n_fields, - error); - else + if (class->create_cursor) { + g_object_ref (backend); + + cursor = class->create_cursor (backend, sort_fields, sort_types, n_fields, error); + + g_object_unref (backend); + } else { g_set_error ( error, E_CLIENT_ERROR, E_CLIENT_ERROR_NOT_SUPPORTED, "Addressbook backend does not support cursors"); - - g_object_unref (backend); + } return cursor; } @@ -3671,14 +3726,18 @@ e_book_backend_delete_cursor (EBookBackend *backend, EDataBookCursor *cursor, GError **error) { + EBookBackendClass *class; gboolean success = FALSE; g_return_val_if_fail (E_IS_BOOK_BACKEND (backend), FALSE); + class = E_BOOK_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, FALSE); + g_object_ref (backend); - if (E_BOOK_BACKEND_GET_CLASS (backend)->delete_cursor) - success = (* E_BOOK_BACKEND_GET_CLASS (backend)->delete_cursor) (backend, cursor, error); + if (class->delete_cursor) + success = class->delete_cursor (backend, cursor, error); else g_warning ("Backend asked to delete a cursor, but does not support cursors"); diff --git a/src/addressbook/libedata-book/e-book-cache.c b/src/addressbook/libedata-book/e-book-cache.c index 6899cd7be..fbf931a7c 100644 --- a/src/addressbook/libedata-book/e-book-cache.c +++ b/src/addressbook/libedata-book/e-book-cache.c @@ -2367,9 +2367,13 @@ query_preflight_check (PreflightContext *context, gint aux_index = summary_field_get_index (book_cache, test->field_id); /* It's really improbable that we ever get 64 fields in the summary - * In any case we warn about this in e_book_sqlite_new_full(). + * In any case we warn about this. */ g_warn_if_fail (aux_index >= 0 && aux_index < EBC_MAX_SUMMARY_FIELDS); + + /* Just to mute a compiler warning when aux_index == -1 */ + aux_index = ABS (aux_index); + context->aux_mask |= (1 << aux_index); /* If this condition is a *requirement* for the overall query to @@ -3184,6 +3188,9 @@ ebc_generate_autocomplete_query (EBookCache *book_cache, aux_index = summary_field_get_index (book_cache, test->field_id); g_warn_if_fail (aux_index >= 0 && aux_index < EBC_MAX_SUMMARY_FIELDS); + + /* Just to mute a compiler warning when aux_index == -1 */ + aux_index = ABS (aux_index); context->aux_mask = (1 << aux_index); context->left_join_mask = 0; diff --git a/src/addressbook/libedata-book/e-book-sqlite.c b/src/addressbook/libedata-book/e-book-sqlite.c index f4f2fdc8b..169b00214 100644 --- a/src/addressbook/libedata-book/e-book-sqlite.c +++ b/src/addressbook/libedata-book/e-book-sqlite.c @@ -4914,6 +4914,10 @@ query_preflight_check (PreflightContext *context, * In any case we warn about this in e_book_sqlite_new_full(). */ g_warn_if_fail (aux_index >= 0 && aux_index < EBSQL_MAX_SUMMARY_FIELDS); + + /* Just to mute a compiler warning when aux_index == -1 */ + aux_index = ABS (aux_index); + context->aux_mask |= (1 << aux_index); EBSQL_NOTE ( PREFLIGHT, @@ -5670,6 +5674,10 @@ ebsql_generate_autocomplete_query (EBookSqlite *ebsql, aux_index = summary_field_get_index (ebsql, test->field_id); g_warn_if_fail (aux_index >= 0 && aux_index < EBSQL_MAX_SUMMARY_FIELDS); + + /* Just to mute a compiler warning when aux_index == -1 */ + aux_index = ABS (aux_index); + context->aux_mask = (1 << aux_index); context->left_join_mask = 0; diff --git a/src/addressbook/libedata-book/e-data-book-cursor.c b/src/addressbook/libedata-book/e-data-book-cursor.c index b1c367a62..2166400af 100644 --- a/src/addressbook/libedata-book/e-data-book-cursor.c +++ b/src/addressbook/libedata-book/e-data-book-cursor.c @@ -472,9 +472,13 @@ data_book_cursor_compare_contact (EDataBookCursor *cursor, EContact *contact, gboolean *matches_sexp) { + EDataBookCursorClass *klass; gint result; - if (!E_DATA_BOOK_CURSOR_GET_CLASS (cursor)->compare_contact) { + klass = E_DATA_BOOK_CURSOR_GET_CLASS (cursor); + g_return_val_if_fail (klass != NULL, 0); + + if (!klass->compare_contact) { g_critical ( "EDataBookCursor.compare_contact() unimplemented on type '%s'", G_OBJECT_TYPE_NAME (cursor)); @@ -482,9 +486,7 @@ data_book_cursor_compare_contact (EDataBookCursor *cursor, } g_object_ref (cursor); - result = (* E_DATA_BOOK_CURSOR_GET_CLASS (cursor)->compare_contact) (cursor, - contact, - matches_sexp); + result = klass->compare_contact (cursor, contact, matches_sexp); g_object_unref (cursor); return result; @@ -754,18 +756,19 @@ e_data_book_cursor_set_sexp (EDataBookCursor *cursor, GCancellable *cancellable, GError **error) { + EDataBookCursorClass *klass; GError *local_error = NULL; gboolean success = FALSE; g_return_val_if_fail (E_IS_DATA_BOOK_CURSOR (cursor), FALSE); - g_object_ref (cursor); + klass = E_DATA_BOOK_CURSOR_GET_CLASS (cursor); + g_return_val_if_fail (klass != NULL, FALSE); - if (E_DATA_BOOK_CURSOR_GET_CLASS (cursor)->set_sexp) { - success = (* E_DATA_BOOK_CURSOR_GET_CLASS (cursor)->set_sexp) (cursor, - sexp, - error); + g_object_ref (cursor); + if (klass->set_sexp) { + success = klass->set_sexp (cursor, sexp, error); } else { g_set_error_literal ( error, @@ -843,34 +846,30 @@ e_data_book_cursor_step (EDataBookCursor *cursor, GCancellable *cancellable, GError **error) { + EDataBookCursorClass *klass; gint retval; - g_return_val_if_fail (E_IS_DATA_BOOK_CURSOR (cursor), FALSE); + g_return_val_if_fail (E_IS_DATA_BOOK_CURSOR (cursor), -1); g_return_val_if_fail ((flags & E_BOOK_CURSOR_STEP_FETCH) == 0 || (results != NULL && *results == NULL), -1); - if (!E_DATA_BOOK_CURSOR_GET_CLASS (cursor)->step) { + klass = E_DATA_BOOK_CURSOR_GET_CLASS (cursor); + g_return_val_if_fail (klass != NULL, -1); + + if (!klass->step) { g_set_error_literal ( error, E_CLIENT_ERROR, E_CLIENT_ERROR_NOT_SUPPORTED, _("Cursor does not support step")); - return FALSE; + return -1; } g_object_ref (cursor); - retval = (* E_DATA_BOOK_CURSOR_GET_CLASS (cursor)->step) (cursor, - revision_guard, - flags, - origin, - count, - results, - cancellable, - error); + retval = klass->step (cursor, revision_guard, flags, origin, count, results, cancellable, error); g_object_unref (cursor); if (retval >= 0 && (flags & E_BOOK_CURSOR_STEP_MOVE) != 0) { - calculate_step_position (cursor, origin, count, retval); } @@ -910,18 +909,19 @@ e_data_book_cursor_set_alphabetic_index (EDataBookCursor *cursor, GCancellable *cancellable, GError **error) { + EDataBookCursorClass *klass; GError *local_error = NULL; gboolean success; g_return_val_if_fail (E_IS_DATA_BOOK_CURSOR (cursor), FALSE); + klass = E_DATA_BOOK_CURSOR_GET_CLASS (cursor); + g_return_val_if_fail (klass != NULL, FALSE); + g_object_ref (cursor); - if (E_DATA_BOOK_CURSOR_GET_CLASS (cursor)->set_alphabetic_index) { - success = (* E_DATA_BOOK_CURSOR_GET_CLASS (cursor)->set_alphabetic_index) (cursor, - index, - locale, - error); + if (klass->set_alphabetic_index) { + success = klass->set_alphabetic_index (cursor, index, locale, error); /* We already set the new cursor value, we can't fail anymore so just fire a warning */ if (!e_data_book_cursor_recalculate (cursor, cancellable, &local_error)) { @@ -966,14 +966,18 @@ e_data_book_cursor_recalculate (EDataBookCursor *cursor, GCancellable *cancellable, GError **error) { + EDataBookCursorClass *klass; gint total = 0; gint position = 0; gboolean success = FALSE; g_return_val_if_fail (E_IS_DATA_BOOK_CURSOR (cursor), FALSE); + klass = E_DATA_BOOK_CURSOR_GET_CLASS (cursor); + g_return_val_if_fail (klass != NULL, FALSE); + /* Bad programming error */ - if (!E_DATA_BOOK_CURSOR_GET_CLASS (cursor)->get_position) { + if (!klass->get_position) { g_critical ( "EDataBookCursor.get_position() unimplemented on type '%s'", G_OBJECT_TYPE_NAME (cursor)); @@ -982,11 +986,7 @@ e_data_book_cursor_recalculate (EDataBookCursor *cursor, } g_object_ref (cursor); - success = (* E_DATA_BOOK_CURSOR_GET_CLASS (cursor)->get_position) (cursor, - &total, - &position, - cancellable, - error); + success = klass->get_position (cursor, &total, &position, cancellable, error); g_object_unref (cursor); if (success) @@ -1019,15 +1019,19 @@ e_data_book_cursor_load_locale (EDataBookCursor *cursor, GCancellable *cancellable, GError **error) { + EDataBookCursorClass *klass; EDataBookCursorPrivate *priv; gboolean success; gchar *local_locale = NULL; g_return_val_if_fail (E_IS_DATA_BOOK_CURSOR (cursor), FALSE); + klass = E_DATA_BOOK_CURSOR_GET_CLASS (cursor); + g_return_val_if_fail (klass != NULL, FALSE); + priv = cursor->priv; - if (!E_DATA_BOOK_CURSOR_GET_CLASS (cursor)->load_locale) { + if (!klass->load_locale) { g_critical ( "EDataBookCursor.load_locale() unimplemented on type '%s'", G_OBJECT_TYPE_NAME (cursor)); @@ -1035,7 +1039,7 @@ e_data_book_cursor_load_locale (EDataBookCursor *cursor, } g_object_ref (cursor); - success = (* E_DATA_BOOK_CURSOR_GET_CLASS (cursor)->load_locale) (cursor, &local_locale, error); + success = klass->load_locale (cursor, &local_locale, error); g_object_unref (cursor); /* Changed ! Reset the thing */ diff --git a/src/calendar/libecal/e-cal-recur.c b/src/calendar/libecal/e-cal-recur.c index 35892dfa0..243bffa2e 100644 --- a/src/calendar/libecal/e-cal-recur.c +++ b/src/calendar/libecal/e-cal-recur.c @@ -4321,6 +4321,13 @@ cal_obj_time_compare_func (gconstpointer arg1, cotime1 = (CalObjTime *) arg1; cotime2 = (CalObjTime *) arg2; + if (!cotime1 || !cotime2) { + if (cotime1 == cotime2) + return 0; + + return cotime2 ? -1 : 1; + } + if (cotime1->year < cotime2->year) retval = -1; else if (cotime1->year > cotime2->year) diff --git a/src/calendar/libedata-cal/e-cal-backend-store.c b/src/calendar/libedata-cal/e-cal-backend-store.c index 3f13a1885..dd14d0ef5 100644 --- a/src/calendar/libedata-cal/e-cal-backend-store.c +++ b/src/calendar/libedata-cal/e-cal-backend-store.c @@ -1177,6 +1177,7 @@ e_cal_backend_store_load (ECalBackendStore *store) return TRUE; class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->load != NULL, FALSE); store->priv->loaded = class->load (store); @@ -1198,6 +1199,7 @@ e_cal_backend_store_clean (ECalBackendStore *store) g_return_val_if_fail (E_IS_CAL_BACKEND_STORE (store), FALSE); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->clean != NULL, FALSE); if (store->priv->intervaltree != NULL) { @@ -1231,6 +1233,7 @@ e_cal_backend_store_get_component (ECalBackendStore *store, g_return_val_if_fail (uid != NULL, NULL); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_component != NULL, NULL); return class->get_component (store, uid, rid); @@ -1257,6 +1260,7 @@ e_cal_backend_store_has_component (ECalBackendStore *store, g_return_val_if_fail (uid != NULL, FALSE); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->has_component != NULL, FALSE); return class->has_component (store, uid, rid); @@ -1285,6 +1289,7 @@ e_cal_backend_store_put_component_with_time_range (ECalBackendStore *store, g_return_val_if_fail (E_IS_CAL_COMPONENT (comp), FALSE); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->put_component != NULL, FALSE); if (class->put_component (store, comp)) { @@ -1317,6 +1322,7 @@ e_cal_backend_store_put_component (ECalBackendStore *store, g_return_val_if_fail (E_IS_CAL_COMPONENT (comp), FALSE); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->put_component != NULL, FALSE); return class->put_component (store, comp); @@ -1343,6 +1349,7 @@ e_cal_backend_store_remove_component (ECalBackendStore *store, g_return_val_if_fail (uid != NULL, FALSE); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->remove_component != NULL, FALSE); if (class->remove_component (store, uid, rid)) { @@ -1371,6 +1378,7 @@ e_cal_backend_store_get_default_timezone (ECalBackendStore *store) g_return_val_if_fail (E_IS_CAL_BACKEND_STORE (store), NULL); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_default_timezone != NULL, NULL); return class->get_default_timezone (store); @@ -1395,6 +1403,7 @@ e_cal_backend_store_set_default_timezone (ECalBackendStore *store, g_return_val_if_fail (zone != NULL, FALSE); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->set_default_timezone != NULL, FALSE); return class->set_default_timezone (store, zone); @@ -1419,6 +1428,7 @@ e_cal_backend_store_get_components_by_uid (ECalBackendStore *store, g_return_val_if_fail (uid != NULL, NULL); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_components_by_uid != NULL, NULL); return class->get_components_by_uid (store, uid); @@ -1492,6 +1502,7 @@ e_cal_backend_store_get_components (ECalBackendStore *store) g_return_val_if_fail (E_IS_CAL_BACKEND_STORE (store), NULL); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_components != NULL, NULL); return class->get_components (store); @@ -1565,6 +1576,7 @@ e_cal_backend_store_get_component_ids (ECalBackendStore *store) g_return_val_if_fail (E_IS_CAL_BACKEND_STORE (store), NULL); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_component_ids != NULL, NULL); return class->get_component_ids (store); @@ -1589,6 +1601,7 @@ e_cal_backend_store_get_key_value (ECalBackendStore *store, g_return_val_if_fail (key != NULL, NULL); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_key_value != NULL, NULL); return class->get_key_value (store, key); @@ -1615,6 +1628,7 @@ e_cal_backend_store_put_key_value (ECalBackendStore *store, g_return_val_if_fail (key != NULL, FALSE); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->put_key_value != NULL, FALSE); return class->put_key_value (store, key, value); @@ -1634,6 +1648,7 @@ e_cal_backend_store_thaw_changes (ECalBackendStore *store) g_return_if_fail (E_IS_CAL_BACKEND_STORE (store)); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_if_fail (class != NULL); g_return_if_fail (class->thaw_changes != NULL); class->thaw_changes (store); @@ -1653,6 +1668,7 @@ e_cal_backend_store_freeze_changes (ECalBackendStore *store) g_return_if_fail (E_IS_CAL_BACKEND_STORE (store)); class = E_CAL_BACKEND_STORE_GET_CLASS (store); + g_return_if_fail (class != NULL); g_return_if_fail (class->freeze_changes != NULL); class->freeze_changes (store); diff --git a/src/calendar/libedata-cal/e-cal-backend-sync.c b/src/calendar/libedata-cal/e-cal-backend-sync.c index 9b01bd98b..0ca680ea7 100644 --- a/src/calendar/libedata-cal/e-cal-backend-sync.c +++ b/src/calendar/libedata-cal/e-cal-backend-sync.c @@ -63,6 +63,8 @@ e_cal_backend_sync_open (ECalBackendSync *backend, g_return_if_fail (E_IS_CAL_BACKEND_SYNC (backend)); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->open_sync != NULL) { class->open_sync ( backend, cal, cancellable, only_if_exists, error); @@ -97,6 +99,8 @@ e_cal_backend_sync_refresh (ECalBackendSync *backend, g_return_if_fail (E_IS_CAL_BACKEND_SYNC (backend)); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->refresh_sync != NULL) { class->refresh_sync (backend, cal, cancellable, error); } else { @@ -136,6 +140,8 @@ e_cal_backend_sync_get_object (ECalBackendSync *backend, g_return_if_fail (calobj != NULL); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->get_object_sync != NULL) { class->get_object_sync ( backend, cal, cancellable, uid, rid, calobj, error); @@ -173,6 +179,8 @@ e_cal_backend_sync_get_object_list (ECalBackendSync *backend, g_return_if_fail (calobjs != NULL); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->get_object_list_sync != NULL) { class->get_object_list_sync ( backend, cal, cancellable, sexp, calobjs, error); @@ -213,6 +221,8 @@ e_cal_backend_sync_get_free_busy (ECalBackendSync *backend, g_return_if_fail (E_IS_CAL_BACKEND_SYNC (backend)); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->get_free_busy_sync != NULL) { class->get_free_busy_sync ( backend, cal, cancellable, @@ -254,6 +264,8 @@ e_cal_backend_sync_create_objects (ECalBackendSync *backend, g_return_if_fail (E_IS_CAL_BACKEND_SYNC (backend)); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->create_objects_sync != NULL) { class->create_objects_sync ( backend, cal, cancellable, @@ -299,6 +311,8 @@ e_cal_backend_sync_modify_objects (ECalBackendSync *backend, g_return_if_fail (E_IS_CAL_BACKEND_SYNC (backend)); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->modify_objects_sync != NULL) { class->modify_objects_sync ( backend, cal, cancellable, @@ -345,6 +359,8 @@ e_cal_backend_sync_remove_objects (ECalBackendSync *backend, g_return_if_fail (E_IS_CAL_BACKEND_SYNC (backend)); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->remove_objects_sync != NULL) { class->remove_objects_sync ( backend, cal, cancellable, @@ -380,6 +396,8 @@ e_cal_backend_sync_receive_objects (ECalBackendSync *backend, g_return_if_fail (E_IS_CAL_BACKEND_SYNC (backend)); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->receive_objects_sync != NULL) { class->receive_objects_sync ( backend, cal, cancellable, calobj, error); @@ -418,6 +436,8 @@ e_cal_backend_sync_send_objects (ECalBackendSync *backend, g_return_if_fail (E_IS_CAL_BACKEND_SYNC (backend)); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->send_objects_sync != NULL) { class->send_objects_sync ( backend, cal, cancellable, @@ -460,6 +480,8 @@ e_cal_backend_sync_get_attachment_uris (ECalBackendSync *backend, g_return_if_fail (attachments != NULL); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->get_attachment_uris_sync != NULL) { class->get_attachment_uris_sync ( backend, cal, cancellable, @@ -501,6 +523,8 @@ e_cal_backend_sync_discard_alarm (ECalBackendSync *backend, g_return_if_fail (auid != NULL); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->discard_alarm_sync != NULL) { class->discard_alarm_sync ( backend, cal, cancellable, @@ -544,6 +568,8 @@ e_cal_backend_sync_get_timezone (ECalBackendSync *backend, g_return_if_fail (E_IS_CAL_BACKEND_SYNC (backend)); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->get_timezone_sync != NULL) { class->get_timezone_sync ( backend, cal, cancellable, @@ -596,6 +622,8 @@ e_cal_backend_sync_add_timezone (ECalBackendSync *backend, g_return_if_fail (E_IS_CAL_BACKEND_SYNC (backend)); class = E_CAL_BACKEND_SYNC_GET_CLASS (backend); + g_return_if_fail (class != NULL); + if (class->add_timezone_sync != NULL) { class->add_timezone_sync ( backend, cal, cancellable, tzobject, error); diff --git a/src/calendar/libedata-cal/e-cal-backend.c b/src/calendar/libedata-cal/e-cal-backend.c index 3756665cc..e5819b68c 100644 --- a/src/calendar/libedata-cal/e-cal-backend.c +++ b/src/calendar/libedata-cal/e-cal-backend.c @@ -698,6 +698,7 @@ static void cal_backend_constructed (GObject *object) { ECalBackend *backend; + ECalBackendClass *klass; ESourceRegistry *registry; ESource *source; gint max_threads = -1; @@ -707,13 +708,16 @@ cal_backend_constructed (GObject *object) G_OBJECT_CLASS (e_cal_backend_parent_class)->constructed (object); backend = E_CAL_BACKEND (object); + klass = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (klass != NULL); + registry = e_cal_backend_get_registry (backend); source = e_backend_get_source (E_BACKEND (backend)); /* If the backend specifies a serial dispatch queue, create * a thread pool with one exclusive thread. The thread pool * will serialize operations for us. */ - if (E_CAL_BACKEND_GET_CLASS (backend)->use_serial_dispatch_queue) { + if (klass->use_serial_dispatch_queue) { max_threads = 1; exclusive = TRUE; } @@ -1424,6 +1428,7 @@ e_cal_backend_get_backend_property (ECalBackend *backend, g_return_val_if_fail (prop_name != NULL, NULL); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_backend_property != NULL, NULL); return class->get_backend_property (backend, prop_name); @@ -1588,6 +1593,7 @@ cal_backend_open_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->open != NULL); data_cal = e_cal_backend_ref_data_cal (backend); @@ -1747,6 +1753,7 @@ cal_backend_refresh_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); data_cal = e_cal_backend_ref_data_cal (backend); g_return_if_fail (data_cal != NULL); @@ -1920,6 +1927,7 @@ cal_backend_get_object_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->get_object != NULL); data_cal = e_cal_backend_ref_data_cal (backend); @@ -2113,6 +2121,7 @@ cal_backend_get_object_list_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->get_object_list != NULL); data_cal = e_cal_backend_ref_data_cal (backend); @@ -2308,6 +2317,7 @@ cal_backend_get_free_busy_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->get_free_busy != NULL); data_cal = e_cal_backend_ref_data_cal (backend); @@ -2525,6 +2535,7 @@ cal_backend_create_objects_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); data_cal = e_cal_backend_ref_data_cal (backend); g_return_if_fail (data_cal != NULL); @@ -2746,6 +2757,7 @@ cal_backend_modify_objects_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); data_cal = e_cal_backend_ref_data_cal (backend); g_return_if_fail (data_cal != NULL); @@ -2978,6 +2990,7 @@ cal_backend_remove_objects_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->remove_objects != NULL); data_cal = e_cal_backend_ref_data_cal (backend); @@ -3216,6 +3229,7 @@ cal_backend_receive_objects_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->receive_objects != NULL); data_cal = e_cal_backend_ref_data_cal (backend); @@ -3395,6 +3409,7 @@ cal_backend_send_objects_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->send_objects != NULL); data_cal = e_cal_backend_ref_data_cal (backend); @@ -3592,6 +3607,7 @@ cal_backend_get_attachment_uris_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->get_attachment_uris != NULL); data_cal = e_cal_backend_ref_data_cal (backend); @@ -3788,6 +3804,7 @@ cal_backend_discard_alarm_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); data_cal = e_cal_backend_ref_data_cal (backend); g_return_if_fail (data_cal != NULL); @@ -3977,6 +3994,7 @@ cal_backend_get_timezone_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->get_timezone != NULL); data_cal = e_cal_backend_ref_data_cal (backend); @@ -4163,6 +4181,7 @@ cal_backend_add_timezone_thread (GSimpleAsyncResult *simple, backend = E_CAL_BACKEND (source_object); class = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->add_timezone != NULL); data_cal = e_cal_backend_ref_data_cal (backend); @@ -4288,11 +4307,16 @@ void e_cal_backend_start_view (ECalBackend *backend, EDataCalView *view) { + ECalBackendClass *klass; + g_return_if_fail (backend != NULL); g_return_if_fail (E_IS_CAL_BACKEND (backend)); - g_return_if_fail (E_CAL_BACKEND_GET_CLASS (backend)->start_view != NULL); - (* E_CAL_BACKEND_GET_CLASS (backend)->start_view) (backend, view); + klass = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (klass != NULL); + g_return_if_fail (klass->start_view != NULL); + + klass->start_view (backend, view); } /** @@ -4308,14 +4332,17 @@ void e_cal_backend_stop_view (ECalBackend *backend, EDataCalView *view) { + ECalBackendClass *klass; + g_return_if_fail (backend != NULL); g_return_if_fail (E_IS_CAL_BACKEND (backend)); - /* backward compatibility, do not force each backend define this function */ - if (!E_CAL_BACKEND_GET_CLASS (backend)->stop_view) - return; + klass = E_CAL_BACKEND_GET_CLASS (backend); + g_return_if_fail (klass != NULL); - (* E_CAL_BACKEND_GET_CLASS (backend)->stop_view) (backend, view); + /* backward compatibility, do not force each backend define this function */ + if (klass->stop_view) + klass->stop_view (backend, view); } /** diff --git a/src/calendar/libedata-cal/e-cal-cache.c b/src/calendar/libedata-cal/e-cal-cache.c index 6c2553a2b..510bbb308 100644 --- a/src/calendar/libedata-cal/e-cal-cache.c +++ b/src/calendar/libedata-cal/e-cal-cache.c @@ -882,13 +882,17 @@ ecc_fill_other_columns (ECalCache *cal_cache, e_cal_component_get_priority (comp, &pint); add_value (ECC_COLUMN_PRIORITY, pint && *pint ? g_strdup_printf ("%d", *pint) : NULL); - if (pint) + if (pint) { e_cal_component_free_priority (pint); + pint = NULL; + } e_cal_component_get_percent (comp, &pint); add_value (ECC_COLUMN_PERCENT_COMPLETE, pint && *pint ? g_strdup_printf ("%d", *pint) : NULL); - if (pint) + if (pint) { e_cal_component_free_percent (pint); + pint = NULL; + } has = e_cal_component_has_alarms (comp); add_value (ECC_COLUMN_HAS_ALARM, g_strdup (has ? "1" : "0")); diff --git a/src/camel/camel-address.c b/src/camel/camel-address.c index 8aec82d4a..9aadff7ca 100644 --- a/src/camel/camel-address.c +++ b/src/camel/camel-address.c @@ -84,6 +84,7 @@ camel_address_length (CamelAddress *addr) g_return_val_if_fail (CAMEL_IS_ADDRESS (addr), -1); class = CAMEL_ADDRESS_GET_CLASS (addr); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->length != NULL, -1); return class->length (addr); @@ -107,6 +108,7 @@ camel_address_decode (CamelAddress *addr, g_return_val_if_fail (CAMEL_IS_ADDRESS (addr), -1); class = CAMEL_ADDRESS_GET_CLASS (addr); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->decode != NULL, -1); return class->decode (addr, raw); @@ -128,6 +130,7 @@ camel_address_encode (CamelAddress *addr) g_return_val_if_fail (CAMEL_IS_ADDRESS (addr), NULL); class = CAMEL_ADDRESS_GET_CLASS (addr); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->encode != NULL, NULL); return class->encode (addr); @@ -152,6 +155,7 @@ camel_address_unformat (CamelAddress *addr, g_return_val_if_fail (CAMEL_IS_ADDRESS (addr), -1); class = CAMEL_ADDRESS_GET_CLASS (addr); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->unformat != NULL, -1); return class->unformat (addr, raw); @@ -173,6 +177,7 @@ camel_address_format (CamelAddress *addr) g_return_val_if_fail (CAMEL_IS_ADDRESS (addr), NULL); class = CAMEL_ADDRESS_GET_CLASS (addr); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->format != NULL, NULL); return class->format (addr); @@ -198,6 +203,7 @@ camel_address_cat (CamelAddress *dest, g_return_val_if_fail (CAMEL_IS_ADDRESS (source), -1); class = CAMEL_ADDRESS_GET_CLASS (dest); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->cat != NULL, -1); return class->cat (dest, source); @@ -239,6 +245,7 @@ camel_address_remove (CamelAddress *addr, g_return_if_fail (CAMEL_IS_ADDRESS (addr)); class = CAMEL_ADDRESS_GET_CLASS (addr); + g_return_if_fail (class != NULL); g_return_if_fail (class->remove != NULL); if (index == -1) { diff --git a/src/camel/camel-certdb.c b/src/camel/camel-certdb.c index 695fb94a5..4e240f186 100644 --- a/src/camel/camel-certdb.c +++ b/src/camel/camel-certdb.c @@ -499,7 +499,7 @@ camel_certdb_load (CamelCertDB *certdb) return -1; class = CAMEL_CERTDB_GET_CLASS (certdb); - if (!class->header_load || !class->cert_load) { + if (!class || !class->header_load || !class->cert_load) { fclose (in); in = NULL; g_warn_if_reached (); @@ -581,7 +581,7 @@ camel_certdb_save (CamelCertDB *certdb) } class = CAMEL_CERTDB_GET_CLASS (certdb); - if (!class->header_save || !class->cert_save) { + if (!class || !class->header_save || !class->cert_save) { fclose (out); out = NULL; g_warn_if_reached (); diff --git a/src/camel/camel-cipher-context.c b/src/camel/camel-cipher-context.c index 2b185bc5a..dcdc3eed0 100644 --- a/src/camel/camel-cipher-context.c +++ b/src/camel/camel-cipher-context.c @@ -348,6 +348,7 @@ camel_cipher_context_sign_sync (CamelCipherContext *context, g_return_val_if_fail (CAMEL_IS_CIPHER_CONTEXT (context), FALSE); class = CAMEL_CIPHER_CONTEXT_GET_CLASS (context); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->sign_sync != NULL, FALSE); CIPHER_LOCK (context); @@ -482,6 +483,7 @@ camel_cipher_context_verify_sync (CamelCipherContext *context, g_return_val_if_fail (CAMEL_IS_MIME_PART (ipart), NULL); class = CAMEL_CIPHER_CONTEXT_GET_CLASS (context); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->verify_sync != NULL, NULL); CIPHER_LOCK (context); @@ -638,6 +640,7 @@ camel_cipher_context_encrypt_sync (CamelCipherContext *context, g_return_val_if_fail (CAMEL_IS_MIME_PART (opart), FALSE); class = CAMEL_CIPHER_CONTEXT_GET_CLASS (context); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->encrypt_sync != NULL, FALSE); CIPHER_LOCK (context); @@ -810,6 +813,7 @@ camel_cipher_context_decrypt_sync (CamelCipherContext *context, g_return_val_if_fail (CAMEL_IS_MIME_PART (opart), NULL); class = CAMEL_CIPHER_CONTEXT_GET_CLASS (context); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->decrypt_sync != NULL, NULL); CIPHER_LOCK (context); @@ -952,8 +956,8 @@ camel_cipher_context_id_to_hash (CamelCipherContext *context, CAMEL_CIPHER_HASH_DEFAULT); class = CAMEL_CIPHER_CONTEXT_GET_CLASS (context); - g_return_val_if_fail ( - class->id_to_hash != NULL, CAMEL_CIPHER_HASH_DEFAULT); + g_return_val_if_fail (class != NULL, CAMEL_CIPHER_HASH_DEFAULT); + g_return_val_if_fail (class->id_to_hash != NULL, CAMEL_CIPHER_HASH_DEFAULT); return class->id_to_hash (context, id); } @@ -967,6 +971,7 @@ camel_cipher_context_hash_to_id (CamelCipherContext *context, g_return_val_if_fail (CAMEL_IS_CIPHER_CONTEXT (context), NULL); class = CAMEL_CIPHER_CONTEXT_GET_CLASS (context); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->hash_to_id != NULL, NULL); return class->hash_to_id (context, hash); diff --git a/src/camel/camel-data-wrapper.c b/src/camel/camel-data-wrapper.c index 7882875d6..68fcee383 100644 --- a/src/camel/camel-data-wrapper.c +++ b/src/camel/camel-data-wrapper.c @@ -545,7 +545,8 @@ camel_data_wrapper_set_mime_type (CamelDataWrapper *data_wrapper, g_return_if_fail (mime_type != NULL); class = CAMEL_DATA_WRAPPER_GET_CLASS (data_wrapper); - g_return_if_fail (class->set_mime_type); + g_return_if_fail (class != NULL); + g_return_if_fail (class->set_mime_type != NULL); class->set_mime_type (data_wrapper, mime_type); } @@ -564,6 +565,7 @@ camel_data_wrapper_get_mime_type (CamelDataWrapper *data_wrapper) g_return_val_if_fail (CAMEL_IS_DATA_WRAPPER (data_wrapper), NULL); class = CAMEL_DATA_WRAPPER_GET_CLASS (data_wrapper); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_mime_type != NULL, NULL); return class->get_mime_type (data_wrapper); @@ -583,6 +585,7 @@ camel_data_wrapper_get_mime_type_field (CamelDataWrapper *data_wrapper) g_return_val_if_fail (CAMEL_IS_DATA_WRAPPER (data_wrapper), NULL); class = CAMEL_DATA_WRAPPER_GET_CLASS (data_wrapper); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_mime_type_field != NULL, NULL); return class->get_mime_type_field (data_wrapper); @@ -608,6 +611,7 @@ camel_data_wrapper_set_mime_type_field (CamelDataWrapper *data_wrapper, g_return_if_fail (mime_type != NULL); class = CAMEL_DATA_WRAPPER_GET_CLASS (data_wrapper); + g_return_if_fail (class != NULL); g_return_if_fail (class->set_mime_type_field != NULL); class->set_mime_type_field (data_wrapper, mime_type); @@ -655,6 +659,7 @@ camel_data_wrapper_is_offline (CamelDataWrapper *data_wrapper) g_return_val_if_fail (CAMEL_IS_DATA_WRAPPER (data_wrapper), TRUE); class = CAMEL_DATA_WRAPPER_GET_CLASS (data_wrapper); + g_return_val_if_fail (class != NULL, TRUE); g_return_val_if_fail (class->is_offline != NULL, TRUE); return class->is_offline (data_wrapper); @@ -716,6 +721,7 @@ camel_data_wrapper_write_to_stream_sync (CamelDataWrapper *data_wrapper, g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1); class = CAMEL_DATA_WRAPPER_GET_CLASS (data_wrapper); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->write_to_stream_sync != NULL, -1); bytes_written = class->write_to_stream_sync ( @@ -863,6 +869,7 @@ camel_data_wrapper_decode_to_stream_sync (CamelDataWrapper *data_wrapper, g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1); class = CAMEL_DATA_WRAPPER_GET_CLASS (data_wrapper); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->decode_to_stream_sync != NULL, -1); bytes_written = class->decode_to_stream_sync ( @@ -999,6 +1006,7 @@ camel_data_wrapper_construct_from_stream_sync (CamelDataWrapper *data_wrapper, g_return_val_if_fail (CAMEL_IS_STREAM (stream), FALSE); class = CAMEL_DATA_WRAPPER_GET_CLASS (data_wrapper); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->construct_from_stream_sync != NULL, FALSE); success = class->construct_from_stream_sync ( @@ -1145,6 +1153,7 @@ camel_data_wrapper_write_to_output_stream_sync (CamelDataWrapper *data_wrapper, g_return_val_if_fail (G_IS_OUTPUT_STREAM (output_stream), -1); class = CAMEL_DATA_WRAPPER_GET_CLASS (data_wrapper); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->write_to_output_stream_sync != NULL, -1); bytes_written = class->write_to_output_stream_sync ( @@ -1297,6 +1306,7 @@ camel_data_wrapper_decode_to_output_stream_sync (CamelDataWrapper *data_wrapper, g_return_val_if_fail (G_IS_OUTPUT_STREAM (output_stream), -1); class = CAMEL_DATA_WRAPPER_GET_CLASS (data_wrapper); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->decode_to_output_stream_sync != NULL, -1); bytes_written = class->decode_to_output_stream_sync ( @@ -1435,6 +1445,7 @@ camel_data_wrapper_construct_from_input_stream_sync (CamelDataWrapper *data_wrap g_return_val_if_fail (G_IS_INPUT_STREAM (input_stream), FALSE); class = CAMEL_DATA_WRAPPER_GET_CLASS (data_wrapper); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->construct_from_input_stream_sync != NULL, FALSE); success = class->construct_from_input_stream_sync ( diff --git a/src/camel/camel-folder-summary.c b/src/camel/camel-folder-summary.c index dfca052d7..ace078a06 100644 --- a/src/camel/camel-folder-summary.c +++ b/src/camel/camel-folder-summary.c @@ -56,10 +56,6 @@ #include "camel-vtrash-folder.h" #include "camel-mime-part-utils.h" -#define CAMEL_FOLDER_SUMMARY_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), CAMEL_TYPE_FOLDER_SUMMARY, CamelFolderSummaryPrivate)) - /* Make 5 minutes as default cache drop */ #define SUMMARY_CACHE_DROP 300 #define dd(x) if (camel_debug("sync")) x @@ -203,29 +199,27 @@ free_o_name (gpointer key, static void folder_summary_dispose (GObject *object) { - CamelFolderSummaryPrivate *priv; - - priv = CAMEL_FOLDER_SUMMARY_GET_PRIVATE (object); + CamelFolderSummary *summary = CAMEL_FOLDER_SUMMARY (object); - if (priv->timeout_handle) { + if (summary->priv->timeout_handle) { /* this should not happen, because the release timer * holds a reference on object */ - g_source_remove (priv->timeout_handle); - priv->timeout_handle = 0; + g_source_remove (summary->priv->timeout_handle); + summary->priv->timeout_handle = 0; } - g_clear_object (&priv->filter_index); - g_clear_object (&priv->filter_64); - g_clear_object (&priv->filter_qp); - g_clear_object (&priv->filter_uu); - g_clear_object (&priv->filter_save); - g_clear_object (&priv->filter_html); - g_clear_object (&priv->filter_stream); - g_clear_object (&priv->filter_index); + g_clear_object (&summary->priv->filter_index); + g_clear_object (&summary->priv->filter_64); + g_clear_object (&summary->priv->filter_qp); + g_clear_object (&summary->priv->filter_uu); + g_clear_object (&summary->priv->filter_save); + g_clear_object (&summary->priv->filter_html); + g_clear_object (&summary->priv->filter_stream); + g_clear_object (&summary->priv->filter_index); - if (priv->folder) { - g_object_weak_unref (G_OBJECT (priv->folder), (GWeakNotify) g_nullify_pointer, &priv->folder); - priv->folder = NULL; + if (summary->priv->folder) { + g_object_weak_unref (G_OBJECT (summary->priv->folder), (GWeakNotify) g_nullify_pointer, &summary->priv->folder); + summary->priv->folder = NULL; } /* Chain up to parent's dispose() method. */ @@ -236,17 +230,16 @@ static void folder_summary_finalize (GObject *object) { CamelFolderSummary *summary = CAMEL_FOLDER_SUMMARY (object); - CamelFolderSummaryPrivate *priv = summary->priv; - g_hash_table_destroy (priv->uids); + g_hash_table_destroy (summary->priv->uids); remove_all_loaded (summary); - g_hash_table_destroy (priv->loaded_infos); + g_hash_table_destroy (summary->priv->loaded_infos); - g_hash_table_foreach (priv->filter_charset, free_o_name, NULL); - g_hash_table_destroy (priv->filter_charset); + g_hash_table_foreach (summary->priv->filter_charset, free_o_name, NULL); + g_hash_table_destroy (summary->priv->filter_charset); - g_rec_mutex_clear (&priv->summary_lock); - g_rec_mutex_clear (&priv->filter_lock); + g_rec_mutex_clear (&summary->priv->summary_lock); + g_rec_mutex_clear (&summary->priv->filter_lock); /* Chain up to parent's finalize() method. */ G_OBJECT_CLASS (camel_folder_summary_parent_class)->finalize (object); @@ -782,7 +775,7 @@ camel_folder_summary_class_init (CamelFolderSummaryClass *class) static void camel_folder_summary_init (CamelFolderSummary *summary) { - summary->priv = CAMEL_FOLDER_SUMMARY_GET_PRIVATE (summary); + summary->priv = G_TYPE_INSTANCE_GET_PRIVATE (summary, CAMEL_TYPE_FOLDER_SUMMARY, CamelFolderSummaryPrivate); summary->priv->version = CAMEL_FOLDER_SUMMARY_VERSION; summary->priv->flags = 0; @@ -1158,6 +1151,7 @@ camel_folder_summary_next_uid_string (CamelFolderSummary *summary) g_return_val_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary), NULL); class = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->next_uid_string != NULL, NULL); return class->next_uid_string (summary); @@ -1437,6 +1431,7 @@ camel_folder_summary_get (CamelFolderSummary *summary, g_return_val_if_fail (uid != NULL, NULL); class = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->message_info_from_uid != NULL, NULL); return class->message_info_from_uid (summary, uid); @@ -2119,12 +2114,17 @@ gboolean camel_folder_summary_save (CamelFolderSummary *summary, GError **error) { + CamelFolderSummaryClass *klass; CamelStore *parent_store; CamelDB *cdb; CamelFIRecord *record; gint ret, count; - g_return_val_if_fail (summary != NULL, FALSE); + g_return_val_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary), FALSE); + + klass = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (klass != NULL, FALSE); + g_return_val_if_fail (klass->summary_header_save != NULL, FALSE); if (!(summary->priv->flags & CAMEL_FOLDER_SUMMARY_DIRTY) || is_in_memory_summary (summary)) @@ -2180,7 +2180,7 @@ camel_folder_summary_save (CamelFolderSummary *summary, } } - record = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary)->summary_header_save (summary, error); + record = klass->summary_header_save (summary, error); if (!record) { summary->priv->flags |= CAMEL_FOLDER_SUMMARY_DIRTY; camel_folder_summary_unlock (summary); @@ -2222,11 +2222,18 @@ gboolean camel_folder_summary_header_save (CamelFolderSummary *summary, GError **error) { + CamelFolderSummaryClass *klass; CamelStore *parent_store; CamelFIRecord *record; CamelDB *cdb; gint ret; + g_return_val_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary), FALSE); + + klass = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (klass != NULL, FALSE); + g_return_val_if_fail (klass->summary_header_save != NULL, FALSE); + if (is_in_memory_summary (summary)) return TRUE; @@ -2239,7 +2246,7 @@ camel_folder_summary_header_save (CamelFolderSummary *summary, d (printf ("\ncamel_folder_summary_header_save called \n")); - record = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary)->summary_header_save (summary, error); + record = klass->summary_header_save (summary, error); if (!record) { camel_folder_summary_unlock (summary); return FALSE; @@ -2283,12 +2290,19 @@ camel_folder_summary_header_load (CamelFolderSummary *summary, const gchar *folder_name, GError **error) { + CamelFolderSummaryClass *klass; CamelDB *cdb; CamelFIRecord *record; gboolean ret = FALSE; d (printf ("\ncamel_folder_summary_header_load called \n")); + g_return_val_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary), FALSE); + + klass = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (klass != NULL, FALSE); + g_return_val_if_fail (klass->summary_header_load != NULL, FALSE); + if (is_in_memory_summary (summary)) return TRUE; @@ -2300,7 +2314,7 @@ camel_folder_summary_header_load (CamelFolderSummary *summary, record = g_new0 (CamelFIRecord, 1); camel_db_read_folder_info_record (cdb, folder_name, record, error); - ret = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary)->summary_header_load (summary, record); + ret = klass->summary_header_load (summary, record); camel_folder_summary_unlock (summary); @@ -2457,6 +2471,7 @@ camel_folder_summary_info_new_from_headers (CamelFolderSummary *summary, g_return_val_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary), NULL); class = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->message_info_new_from_headers != NULL, NULL); return class->message_info_new_from_headers (summary, headers); @@ -2487,50 +2502,57 @@ CamelMessageInfo * camel_folder_summary_info_new_from_parser (CamelFolderSummary *summary, CamelMimeParser *mp) { + CamelFolderSummaryClass *klass; CamelMessageInfo *info = NULL; gchar *buffer; gsize len; - CamelFolderSummaryPrivate *p = summary->priv; goffset start; CamelIndexName *name = NULL; + g_return_val_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary), NULL); + g_return_val_if_fail (CAMEL_IS_MIME_PARSER (mp), NULL); + + klass = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (klass != NULL, NULL); + g_return_val_if_fail (klass->message_info_new_from_parser, NULL); + /* should this check the parser is in the right state, or assume it is?? */ start = camel_mime_parser_tell (mp); if (camel_mime_parser_step (mp, &buffer, &len) != CAMEL_MIME_PARSER_STATE_EOF) { - info = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary)->message_info_new_from_parser (summary, mp); + info = klass->message_info_new_from_parser (summary, mp); camel_mime_parser_unstep (mp); /* assign a unique uid, this is slightly 'wrong' as we do not really * know if we are going to store this in the summary, but no matter */ - if (p->index) + if (summary->priv->index) summary_assign_uid (summary, info); g_rec_mutex_lock (&summary->priv->filter_lock); - if (p->index) { - if (p->filter_index == NULL) - p->filter_index = camel_mime_filter_index_new (p->index); - camel_index_delete_name (p->index, camel_message_info_get_uid (info)); - name = camel_index_add_name (p->index, camel_message_info_get_uid (info)); - camel_mime_filter_index_set_name (CAMEL_MIME_FILTER_INDEX (p->filter_index), name); + if (summary->priv->index) { + if (!summary->priv->filter_index) + summary->priv->filter_index = camel_mime_filter_index_new (summary->priv->index); + camel_index_delete_name (summary->priv->index, camel_message_info_get_uid (info)); + name = camel_index_add_name (summary->priv->index, camel_message_info_get_uid (info)); + camel_mime_filter_index_set_name (CAMEL_MIME_FILTER_INDEX (summary->priv->filter_index), name); } /* always scan the content info, even if we dont save it */ summary_traverse_content_with_parser (summary, info, mp); - if (name && p->index) { - camel_index_write_name (p->index, name); + if (name && summary->priv->index) { + camel_index_write_name (summary->priv->index, name); g_object_unref (name); - camel_mime_filter_index_set_name ( - CAMEL_MIME_FILTER_INDEX (p->filter_index), NULL); + camel_mime_filter_index_set_name (CAMEL_MIME_FILTER_INDEX (summary->priv->filter_index), NULL); } g_rec_mutex_unlock (&summary->priv->filter_lock); camel_message_info_set_size (info, camel_mime_parser_tell (mp) - start); } + return info; } @@ -2548,31 +2570,37 @@ CamelMessageInfo * camel_folder_summary_info_new_from_message (CamelFolderSummary *summary, CamelMimeMessage *msg) { + CamelFolderSummaryClass *klass; CamelMessageInfo *info; - CamelFolderSummaryPrivate *p = summary->priv; CamelIndexName *name = NULL; - info = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary)->message_info_new_from_message (summary, msg); + g_return_val_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary), NULL); + g_return_val_if_fail (CAMEL_IS_MIME_MESSAGE (msg), NULL); + + klass = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (klass != NULL, NULL); + g_return_val_if_fail (klass->message_info_new_from_message != NULL, NULL); + + info = klass->message_info_new_from_message (summary, msg); /* assign a unique uid, this is slightly 'wrong' as we do not really * know if we are going to store this in the summary, but we need it set for indexing */ - if (p->index) + if (summary->priv->index) summary_assign_uid (summary, info); g_rec_mutex_lock (&summary->priv->filter_lock); - if (p->index) { - if (p->filter_index == NULL) - p->filter_index = camel_mime_filter_index_new (p->index); - camel_index_delete_name (p->index, camel_message_info_get_uid (info)); - name = camel_index_add_name (p->index, camel_message_info_get_uid (info)); - camel_mime_filter_index_set_name ( - CAMEL_MIME_FILTER_INDEX (p->filter_index), name); + if (summary->priv->index) { + if (summary->priv->filter_index == NULL) + summary->priv->filter_index = camel_mime_filter_index_new (summary->priv->index); + camel_index_delete_name (summary->priv->index, camel_message_info_get_uid (info)); + name = camel_index_add_name (summary->priv->index, camel_message_info_get_uid (info)); + camel_mime_filter_index_set_name (CAMEL_MIME_FILTER_INDEX (summary->priv->filter_index), name); - if (p->filter_stream == NULL) { + if (!summary->priv->filter_stream) { CamelStream *null = camel_stream_null_new (); - p->filter_stream = camel_stream_filter_new (null); + summary->priv->filter_stream = camel_stream_filter_new (null); g_object_unref (null); } } @@ -2580,10 +2608,9 @@ camel_folder_summary_info_new_from_message (CamelFolderSummary *summary, summary_traverse_content_with_part (summary, info, (CamelMimePart *) msg); if (name) { - camel_index_write_name (p->index, name); + camel_index_write_name (summary->priv->index, name); g_object_unref (name); - camel_mime_filter_index_set_name ( - CAMEL_MIME_FILTER_INDEX (p->filter_index), NULL); + camel_mime_filter_index_set_name (CAMEL_MIME_FILTER_INDEX (summary->priv->filter_index), NULL); } g_rec_mutex_unlock (&summary->priv->filter_lock); @@ -2822,17 +2849,24 @@ static CamelMessageInfo * message_info_new_from_parser (CamelFolderSummary *summary, CamelMimeParser *mp) { + CamelFolderSummaryClass *klass; CamelMessageInfo *mi = NULL; CamelNameValueArray *headers; gint state; + g_return_val_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary), NULL); + + klass = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (klass != NULL, NULL); + g_return_val_if_fail (klass->message_info_new_from_headers != NULL, NULL); + state = camel_mime_parser_state (mp); switch (state) { case CAMEL_MIME_PARSER_STATE_HEADER: case CAMEL_MIME_PARSER_STATE_MESSAGE: case CAMEL_MIME_PARSER_STATE_MULTIPART: headers = camel_mime_parser_dup_headers (mp); - mi = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary)->message_info_new_from_headers (summary, headers); + mi = klass->message_info_new_from_headers (summary, headers); camel_name_value_array_free (headers); break; default: @@ -2846,7 +2880,15 @@ static CamelMessageInfo * message_info_new_from_message (CamelFolderSummary *summary, CamelMimeMessage *msg) { - return CAMEL_FOLDER_SUMMARY_GET_CLASS (summary)->message_info_new_from_headers (summary, camel_medium_get_headers (CAMEL_MEDIUM (msg))); + CamelFolderSummaryClass *klass; + + g_return_val_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary), NULL); + + klass = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (klass != NULL, NULL); + g_return_val_if_fail (klass->message_info_new_from_headers != NULL, NULL); + + return klass->message_info_new_from_headers (summary, camel_medium_get_headers (CAMEL_MEDIUM (msg))); } static gchar * @@ -3055,7 +3097,6 @@ summary_traverse_content_with_parser (CamelFolderSummary *summary, gchar *buffer; CamelContentType *ct; gint enc_id = -1, chr_id = -1, html_id = -1, idx_id = -1; - CamelFolderSummaryPrivate *p = summary->priv; CamelMimeFilter *mfc; const gchar *calendar_header; @@ -3090,7 +3131,7 @@ summary_traverse_content_with_parser (CamelFolderSummary *summary, if (camel_mime_parser_header (mp, "X-Evolution-Note", NULL)) camel_message_info_set_user_flag (msginfo, "$has_note", TRUE); - if (p->index && camel_content_type_is (ct, "text", "*")) { + if (summary->priv->index && camel_content_type_is (ct, "text", "*")) { gchar *encoding; const gchar *charset; @@ -3100,25 +3141,25 @@ summary_traverse_content_with_parser (CamelFolderSummary *summary, if (encoding) { if (!g_ascii_strcasecmp (encoding, "base64")) { d (printf (" decoding base64\n")); - if (p->filter_64 == NULL) - p->filter_64 = camel_mime_filter_basic_new (CAMEL_MIME_FILTER_BASIC_BASE64_DEC); + if (summary->priv->filter_64 == NULL) + summary->priv->filter_64 = camel_mime_filter_basic_new (CAMEL_MIME_FILTER_BASIC_BASE64_DEC); else - camel_mime_filter_reset (p->filter_64); - enc_id = camel_mime_parser_filter_add (mp, p->filter_64); + camel_mime_filter_reset (summary->priv->filter_64); + enc_id = camel_mime_parser_filter_add (mp, summary->priv->filter_64); } else if (!g_ascii_strcasecmp (encoding, "quoted-printable")) { d (printf (" decoding quoted-printable\n")); - if (p->filter_qp == NULL) - p->filter_qp = camel_mime_filter_basic_new (CAMEL_MIME_FILTER_BASIC_QP_DEC); + if (summary->priv->filter_qp == NULL) + summary->priv->filter_qp = camel_mime_filter_basic_new (CAMEL_MIME_FILTER_BASIC_QP_DEC); else - camel_mime_filter_reset (p->filter_qp); - enc_id = camel_mime_parser_filter_add (mp, p->filter_qp); + camel_mime_filter_reset (summary->priv->filter_qp); + enc_id = camel_mime_parser_filter_add (mp, summary->priv->filter_qp); } else if (!g_ascii_strcasecmp (encoding, "x-uuencode")) { d (printf (" decoding x-uuencode\n")); - if (p->filter_uu == NULL) - p->filter_uu = camel_mime_filter_basic_new (CAMEL_MIME_FILTER_BASIC_UU_DEC); + if (summary->priv->filter_uu == NULL) + summary->priv->filter_uu = camel_mime_filter_basic_new (CAMEL_MIME_FILTER_BASIC_UU_DEC); else - camel_mime_filter_reset (p->filter_uu); - enc_id = camel_mime_parser_filter_add (mp, p->filter_uu); + camel_mime_filter_reset (summary->priv->filter_uu); + enc_id = camel_mime_parser_filter_add (mp, summary->priv->filter_uu); } else { d (printf (" ignoring encoding %s\n", encoding)); } @@ -3130,11 +3171,11 @@ summary_traverse_content_with_parser (CamelFolderSummary *summary, && !(g_ascii_strcasecmp (charset, "us-ascii") == 0 || g_ascii_strcasecmp (charset, "utf-8") == 0)) { d (printf (" Adding conversion filter from %s to UTF-8\n", charset)); - mfc = g_hash_table_lookup (p->filter_charset, charset); + mfc = g_hash_table_lookup (summary->priv->filter_charset, charset); if (mfc == NULL) { mfc = camel_mime_filter_charset_new (charset, "UTF-8"); if (mfc) - g_hash_table_insert (p->filter_charset, g_strdup (charset), mfc); + g_hash_table_insert (summary->priv->filter_charset, g_strdup (charset), mfc); } else { camel_mime_filter_reset ((CamelMimeFilter *) mfc); } @@ -3148,15 +3189,15 @@ summary_traverse_content_with_parser (CamelFolderSummary *summary, /* we do charset conversions before this filter, which isn't strictly correct, * but works in most cases */ if (camel_content_type_is (ct, "text", "html")) { - if (p->filter_html == NULL) - p->filter_html = camel_mime_filter_html_new (); + if (summary->priv->filter_html == NULL) + summary->priv->filter_html = camel_mime_filter_html_new (); else - camel_mime_filter_reset ((CamelMimeFilter *) p->filter_html); - html_id = camel_mime_parser_filter_add (mp, (CamelMimeFilter *) p->filter_html); + camel_mime_filter_reset ((CamelMimeFilter *) summary->priv->filter_html); + html_id = camel_mime_parser_filter_add (mp, (CamelMimeFilter *) summary->priv->filter_html); } /* and this filter actually does the indexing */ - idx_id = camel_mime_parser_filter_add (mp, p->filter_index); + idx_id = camel_mime_parser_filter_add (mp, summary->priv->filter_index); } /* and scan/index everything */ while (camel_mime_parser_step (mp, &buffer, &len) != CAMEL_MIME_PARSER_STATE_BODY_END) @@ -3208,7 +3249,6 @@ summary_traverse_content_with_part (CamelFolderSummary *summary, { CamelDataWrapper *containee; gint parts, i; - CamelFolderSummaryPrivate *p = summary->priv; CamelContentType *ct; const CamelNameValueArray *headers; gboolean is_calendar = FALSE, is_note = FALSE; @@ -3279,33 +3319,33 @@ summary_traverse_content_with_part (CamelFolderSummary *summary, } else if (CAMEL_IS_MIME_MESSAGE (containee)) { /* for messages we only look at its contents */ summary_traverse_content_with_part (summary, msginfo, (CamelMimePart *) containee); - } else if (p->filter_stream + } else if (summary->priv->filter_stream && camel_content_type_is (ct, "text", "*")) { gint html_id = -1, idx_id = -1; /* pre-attach html filter if required, otherwise just index filter */ if (camel_content_type_is (ct, "text", "html")) { - if (p->filter_html == NULL) - p->filter_html = camel_mime_filter_html_new (); + if (summary->priv->filter_html == NULL) + summary->priv->filter_html = camel_mime_filter_html_new (); else - camel_mime_filter_reset ((CamelMimeFilter *) p->filter_html); + camel_mime_filter_reset ((CamelMimeFilter *) summary->priv->filter_html); html_id = camel_stream_filter_add ( - CAMEL_STREAM_FILTER (p->filter_stream), - (CamelMimeFilter *) p->filter_html); + CAMEL_STREAM_FILTER (summary->priv->filter_stream), + (CamelMimeFilter *) summary->priv->filter_html); } idx_id = camel_stream_filter_add ( - CAMEL_STREAM_FILTER (p->filter_stream), - p->filter_index); + CAMEL_STREAM_FILTER (summary->priv->filter_stream), + summary->priv->filter_index); /* FIXME Pass a GCancellable and GError here. */ camel_data_wrapper_decode_to_stream_sync ( - containee, p->filter_stream, NULL, NULL); - camel_stream_flush (p->filter_stream, NULL, NULL); + containee, summary->priv->filter_stream, NULL, NULL); + camel_stream_flush (summary->priv->filter_stream, NULL, NULL); camel_stream_filter_remove ( - CAMEL_STREAM_FILTER (p->filter_stream), idx_id); + CAMEL_STREAM_FILTER (summary->priv->filter_stream), idx_id); camel_stream_filter_remove ( - CAMEL_STREAM_FILTER (p->filter_stream), html_id); + CAMEL_STREAM_FILTER (summary->priv->filter_stream), html_id); } } @@ -3379,10 +3419,19 @@ CamelMessageInfo * camel_message_info_new_from_headers (CamelFolderSummary *summary, const CamelNameValueArray *headers) { - if (summary != NULL) - return CAMEL_FOLDER_SUMMARY_GET_CLASS (summary)->message_info_new_from_headers (summary, headers); - else + if (summary != NULL) { + CamelFolderSummaryClass *klass; + + g_return_val_if_fail (CAMEL_IS_FOLDER_SUMMARY (summary), NULL); + + klass = CAMEL_FOLDER_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (klass != NULL, NULL); + g_return_val_if_fail (klass->message_info_new_from_headers != NULL, NULL); + + return klass->message_info_new_from_headers (summary, headers); + } else { return message_info_new_from_headers (NULL, headers); + } } /** diff --git a/src/camel/camel-folder.c b/src/camel/camel-folder.c index ee67b63ee..c67b2be74 100644 --- a/src/camel/camel-folder.c +++ b/src/camel/camel-folder.c @@ -1396,6 +1396,7 @@ camel_folder_get_filename (CamelFolder *folder, g_return_val_if_fail (uid != NULL, NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_filename != NULL, NULL); filename = class->get_filename (folder, uid, error); @@ -1713,6 +1714,7 @@ camel_folder_get_message_count (CamelFolder *folder) g_return_val_if_fail (CAMEL_IS_FOLDER (folder), -1); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->get_message_count != NULL, -1); return class->get_message_count (folder); @@ -1802,6 +1804,7 @@ camel_folder_get_permanent_flags (CamelFolder *folder) g_return_val_if_fail (CAMEL_IS_FOLDER (folder), 0); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, 0); g_return_val_if_fail (class->get_permanent_flags != NULL, 0); return class->get_permanent_flags (folder); @@ -1827,6 +1830,7 @@ camel_folder_get_message_flags (CamelFolder *folder, g_return_val_if_fail (uid != NULL, 0); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, 0); g_return_val_if_fail (class->get_message_flags != NULL, 0); return class->get_message_flags (folder, uid); @@ -1863,6 +1867,7 @@ camel_folder_set_message_flags (CamelFolder *folder, g_return_val_if_fail (uid != NULL, FALSE); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->set_message_flags != NULL, FALSE); return class->set_message_flags (folder, uid, mask, set); @@ -1892,6 +1897,7 @@ camel_folder_get_message_user_flag (CamelFolder *folder, g_return_val_if_fail (name != NULL, 0); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, 0); g_return_val_if_fail (class->get_message_user_flag != NULL, 0); return class->get_message_user_flag (folder, uid, name); @@ -1924,6 +1930,7 @@ camel_folder_set_message_user_flag (CamelFolder *folder, g_return_if_fail (name != NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_if_fail (class != NULL); g_return_if_fail (class->set_message_user_flag != NULL); class->set_message_user_flag (folder, uid, name, value); @@ -1952,6 +1959,7 @@ camel_folder_get_message_user_tag (CamelFolder *folder, g_return_val_if_fail (name != NULL, NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_message_user_tag != NULL, NULL); /* FIXME: should duplicate string */ @@ -1985,6 +1993,7 @@ camel_folder_set_message_user_tag (CamelFolder *folder, g_return_if_fail (name != NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_if_fail (class != NULL); g_return_if_fail (class->set_message_user_tag != NULL); class->set_message_user_tag (folder, uid, name, value); @@ -2011,6 +2020,7 @@ camel_folder_get_message_info (CamelFolder *folder, g_return_val_if_fail (uid != NULL, NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_message_info != NULL, NULL); return class->get_message_info (folder, uid); @@ -2055,6 +2065,7 @@ camel_folder_get_uids (CamelFolder *folder) g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_uids != NULL, NULL); return class->get_uids (folder); @@ -2077,6 +2088,7 @@ camel_folder_free_uids (CamelFolder *folder, g_return_if_fail (array != NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_if_fail (class != NULL); g_return_if_fail (class->free_uids != NULL); class->free_uids (folder, array); @@ -2109,6 +2121,7 @@ camel_folder_get_uncached_uids (CamelFolder *folder, g_return_val_if_fail (uids != NULL, NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_uncached_uids != NULL, NULL); uncached_uids = class->get_uncached_uids (folder, uids, error); @@ -2142,6 +2155,7 @@ camel_folder_cmp_uids (CamelFolder *folder, g_return_val_if_fail (uid2 != NULL, 0); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, 0); g_return_val_if_fail (class->cmp_uids != NULL, 0); return class->cmp_uids (folder, uid1, uid2); @@ -2166,6 +2180,7 @@ camel_folder_sort_uids (CamelFolder *folder, g_return_if_fail (uids != NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_if_fail (class != NULL); g_return_if_fail (class->sort_uids != NULL); class->sort_uids (folder, uids); @@ -2189,6 +2204,7 @@ camel_folder_get_summary (CamelFolder *folder) g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_summary != NULL, NULL); return class->get_summary (folder); @@ -2211,6 +2227,7 @@ camel_folder_free_summary (CamelFolder *folder, g_return_if_fail (array != NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_if_fail (class != NULL); g_return_if_fail (class->free_summary != NULL); class->free_summary (folder, array); @@ -2241,6 +2258,7 @@ camel_folder_search_by_expression (CamelFolder *folder, g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->search_by_expression != NULL, NULL); /* NOTE: that it is upto the callee to CAMEL_FOLDER_REC_LOCK */ @@ -2275,6 +2293,7 @@ camel_folder_count_by_expression (CamelFolder *folder, g_return_val_if_fail (CAMEL_IS_FOLDER (folder), 0); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, 0); g_return_val_if_fail (class->count_by_expression != NULL, 0); /* NOTE: that it is upto the callee to CAMEL_FOLDER_REC_LOCK */ @@ -2309,6 +2328,7 @@ camel_folder_search_by_uids (CamelFolder *folder, g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->search_by_uids != NULL, NULL); /* NOTE: that it is upto the callee to CAMEL_FOLDER_REC_LOCK */ @@ -2337,6 +2357,7 @@ camel_folder_search_free (CamelFolder *folder, g_return_if_fail (result != NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_if_fail (class != NULL); g_return_if_fail (class->search_free != NULL); /* NOTE: upto the callee to CAMEL_FOLDER_REC_LOCK */ @@ -2366,6 +2387,7 @@ camel_folder_delete (CamelFolder *folder) g_return_if_fail (CAMEL_IS_FOLDER (folder)); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_if_fail (class != NULL); g_return_if_fail (class->delete_ != NULL); camel_folder_lock (folder); @@ -2431,6 +2453,7 @@ camel_folder_rename (CamelFolder *folder, g_return_if_fail (new_name != NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_if_fail (class != NULL); g_return_if_fail (class->rename != NULL); old_name = g_strdup (camel_folder_get_full_name (folder)); @@ -2546,6 +2569,7 @@ camel_folder_freeze (CamelFolder *folder) g_return_if_fail (CAMEL_IS_FOLDER (folder)); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_if_fail (class != NULL); g_return_if_fail (class->freeze != NULL); class->freeze (folder); @@ -2567,6 +2591,7 @@ camel_folder_thaw (CamelFolder *folder) g_return_if_fail (folder->priv->frozen != 0); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_if_fail (class != NULL); g_return_if_fail (class->thaw != NULL); class->thaw (folder); @@ -2586,6 +2611,7 @@ camel_folder_is_frozen (CamelFolder *folder) g_return_val_if_fail (CAMEL_IS_FOLDER (folder), FALSE); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->is_frozen != NULL, FALSE); return class->is_frozen (folder); @@ -2790,6 +2816,7 @@ camel_folder_append_message_sync (CamelFolder *folder, g_return_val_if_fail (CAMEL_IS_MIME_MESSAGE (message), FALSE); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->append_message_sync != NULL, FALSE); /* Need to connect the service before we can append. */ @@ -2964,6 +2991,7 @@ camel_folder_expunge_sync (CamelFolder *folder, g_return_val_if_fail (CAMEL_IS_FOLDER (folder), FALSE); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->expunge_sync != NULL, FALSE); /* Need to connect the service before we can expunge. */ @@ -3110,6 +3138,7 @@ camel_folder_get_message_sync (CamelFolder *folder, g_return_val_if_fail (message_uid != NULL, NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_message_sync != NULL, NULL); camel_operation_push_message ( @@ -3199,6 +3228,8 @@ camel_folder_get_message_cached (CamelFolder *folder, g_return_val_if_fail (message_uid != NULL, NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, NULL); + if (!class->get_message_cached) return NULL; @@ -3333,6 +3364,7 @@ camel_folder_get_quota_info_sync (CamelFolder *folder, g_return_val_if_fail (CAMEL_IS_FOLDER (folder), NULL); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_quota_info_sync != NULL, NULL); /* Translators: The first “%s” is replaced with an account name and the second “%s” @@ -3470,6 +3502,7 @@ camel_folder_purge_message_cache_sync (CamelFolder *folder, g_return_val_if_fail (CAMEL_IS_FOLDER (folder), FALSE); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, FALSE); /* Some backends that wont support mobile * mode, won't have this api implemented. */ @@ -3618,6 +3651,7 @@ camel_folder_refresh_info_sync (CamelFolder *folder, g_return_val_if_fail (CAMEL_IS_FOLDER (folder), FALSE); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->refresh_info_sync != NULL, FALSE); /* Need to connect the service before we can refresh. */ @@ -3759,6 +3793,7 @@ camel_folder_synchronize_sync (CamelFolder *folder, g_return_val_if_fail (CAMEL_IS_FOLDER (folder), FALSE); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->synchronize_sync != NULL, FALSE); /* Need to connect the service before we can synchronize. */ @@ -3914,6 +3949,7 @@ camel_folder_synchronize_message_sync (CamelFolder *folder, g_return_val_if_fail (message_uid != NULL, FALSE); class = CAMEL_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->get_message_sync != NULL, FALSE); camel_folder_lock (folder); @@ -4108,6 +4144,9 @@ camel_folder_transfer_messages_to_sync (CamelFolder *source, class = CAMEL_FOLDER_GET_CLASS (destination); else class = CAMEL_FOLDER_GET_CLASS (source); + + g_return_val_if_fail (class != NULL, FALSE); + success = class->transfer_messages_to_sync ( source, message_uids, destination, delete_originals, transferred_uids, cancellable, error); @@ -4270,6 +4309,7 @@ camel_folder_prepare_content_refresh (CamelFolder *folder) g_return_if_fail (CAMEL_IS_FOLDER (folder)); klass = CAMEL_FOLDER_GET_CLASS (folder); + g_return_if_fail (klass != NULL); if (klass->prepare_content_refresh) klass->prepare_content_refresh (folder); @@ -4582,7 +4622,7 @@ camel_folder_change_info_add_uid (CamelFolderChangeInfo *info, } else if (olduids == info->uid_changed) { g_ptr_array_remove_fast (olduids, olduid); g_ptr_array_add (info->uid_added, olduid); - g_hash_table_insert (p->uid_stored, olduid, info->uid_changed); + g_hash_table_insert (p->uid_stored, olduid, info->uid_added); } return; } diff --git a/src/camel/camel-index.c b/src/camel/camel-index.c index c95964e97..98cc3cf78 100644 --- a/src/camel/camel-index.c +++ b/src/camel/camel-index.c @@ -97,6 +97,7 @@ camel_index_rename (CamelIndex *idx, g_return_val_if_fail (CAMEL_IS_INDEX (idx), -1); class = CAMEL_INDEX_GET_CLASS (idx); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->rename != NULL, -1); if ((idx->state & CAMEL_INDEX_DELETED) == 0) @@ -134,6 +135,7 @@ camel_index_sync (CamelIndex *idx) g_return_val_if_fail (CAMEL_IS_INDEX (idx), -1); class = CAMEL_INDEX_GET_CLASS (idx); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->sync != NULL, -1); if ((idx->state & CAMEL_INDEX_DELETED) == 0) @@ -152,6 +154,7 @@ camel_index_compress (CamelIndex *idx) g_return_val_if_fail (CAMEL_IS_INDEX (idx), -1); class = CAMEL_INDEX_GET_CLASS (idx); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->compress != NULL, -1); if ((idx->state & CAMEL_INDEX_DELETED) == 0) @@ -171,6 +174,7 @@ camel_index_delete (CamelIndex *idx) g_return_val_if_fail (CAMEL_IS_INDEX (idx), -1); class = CAMEL_INDEX_GET_CLASS (idx); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->delete_ != NULL, -1); if ((idx->state & CAMEL_INDEX_DELETED) == 0) { @@ -193,6 +197,7 @@ camel_index_has_name (CamelIndex *idx, g_return_val_if_fail (CAMEL_IS_INDEX (idx), FALSE); class = CAMEL_INDEX_GET_CLASS (idx); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->has_name != NULL, FALSE); if ((idx->state & CAMEL_INDEX_DELETED) == 0) @@ -219,6 +224,7 @@ camel_index_add_name (CamelIndex *index, g_return_val_if_fail (CAMEL_IS_INDEX (index), NULL); class = CAMEL_INDEX_GET_CLASS (index); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->add_name != NULL, NULL); if ((index->state & CAMEL_INDEX_DELETED) == 0) @@ -236,6 +242,7 @@ camel_index_write_name (CamelIndex *idx, g_return_val_if_fail (CAMEL_IS_INDEX (idx), -1); class = CAMEL_INDEX_GET_CLASS (idx); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->write_name != NULL, -1); if ((idx->state & CAMEL_INDEX_DELETED) == 0) @@ -263,6 +270,7 @@ camel_index_find_name (CamelIndex *index, g_return_val_if_fail (CAMEL_IS_INDEX (index), NULL); class = CAMEL_INDEX_GET_CLASS (index); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->find_name != NULL, NULL); if ((index->state & CAMEL_INDEX_DELETED) == 0) @@ -287,6 +295,7 @@ camel_index_delete_name (CamelIndex *index, g_return_if_fail (CAMEL_IS_INDEX (index)); class = CAMEL_INDEX_GET_CLASS (index); + g_return_if_fail (class != NULL); g_return_if_fail (class->delete_name != NULL); if ((index->state & CAMEL_INDEX_DELETED) == 0) @@ -312,6 +321,7 @@ camel_index_find (CamelIndex *index, g_return_val_if_fail (CAMEL_IS_INDEX (index), NULL); class = CAMEL_INDEX_GET_CLASS (index); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->find != NULL, NULL); if ((index->state & CAMEL_INDEX_DELETED) != 0) @@ -343,6 +353,7 @@ camel_index_words (CamelIndex *index) g_return_val_if_fail (CAMEL_IS_INDEX (index), NULL); class = CAMEL_INDEX_GET_CLASS (index); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->words != NULL, NULL); if ((index->state & CAMEL_INDEX_DELETED) == 0) @@ -395,6 +406,7 @@ camel_index_name_add_word (CamelIndexName *idn, g_return_if_fail (CAMEL_IS_INDEX_NAME (idn)); class = CAMEL_INDEX_NAME_GET_CLASS (idn); + g_return_if_fail (class != NULL); g_return_if_fail (class->add_word != NULL); if (idn->index->normalize) @@ -416,6 +428,7 @@ camel_index_name_add_buffer (CamelIndexName *idn, g_return_val_if_fail (CAMEL_IS_INDEX_NAME (idn), 0); class = CAMEL_INDEX_NAME_GET_CLASS (idn); + g_return_val_if_fail (class != NULL, 0); g_return_val_if_fail (class->add_buffer != NULL, 0); return class->add_buffer (idn, buffer, len); @@ -463,6 +476,7 @@ camel_index_cursor_next (CamelIndexCursor *idc) g_return_val_if_fail (CAMEL_IS_INDEX_CURSOR (idc), NULL); class = CAMEL_INDEX_CURSOR_GET_CLASS (idc); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->next != NULL, NULL); return class->next (idc); diff --git a/src/camel/camel-medium.c b/src/camel/camel-medium.c index 21658816f..f35491adb 100644 --- a/src/camel/camel-medium.c +++ b/src/camel/camel-medium.c @@ -187,6 +187,7 @@ camel_medium_add_header (CamelMedium *medium, g_return_if_fail (value != NULL); class = CAMEL_MEDIUM_GET_CLASS (medium); + g_return_if_fail (class != NULL); g_return_if_fail (class->add_header != NULL); class->add_header (medium, name, value); @@ -218,6 +219,7 @@ camel_medium_set_header (CamelMedium *medium, } class = CAMEL_MEDIUM_GET_CLASS (medium); + g_return_if_fail (class != NULL); g_return_if_fail (class->set_header != NULL); class->set_header (medium, name, value); @@ -241,6 +243,7 @@ camel_medium_remove_header (CamelMedium *medium, g_return_if_fail (name != NULL); class = CAMEL_MEDIUM_GET_CLASS (medium); + g_return_if_fail (class != NULL); g_return_if_fail (class->remove_header != NULL); class->remove_header (medium, name); @@ -270,6 +273,7 @@ camel_medium_get_header (CamelMedium *medium, g_return_val_if_fail (name != NULL, NULL); class = CAMEL_MEDIUM_GET_CLASS (medium); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_header != NULL, NULL); return class->get_header (medium, name); @@ -295,6 +299,7 @@ camel_medium_dup_headers (CamelMedium *medium) g_return_val_if_fail (CAMEL_IS_MEDIUM (medium), NULL); class = CAMEL_MEDIUM_GET_CLASS (medium); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->dup_headers != NULL, NULL); return class->dup_headers (medium); @@ -320,6 +325,7 @@ camel_medium_get_headers (CamelMedium *medium) g_return_val_if_fail (CAMEL_IS_MEDIUM (medium), NULL); class = CAMEL_MEDIUM_GET_CLASS (medium); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_headers != NULL, NULL); return class->get_headers (medium); @@ -343,6 +349,7 @@ camel_medium_get_content (CamelMedium *medium) g_return_val_if_fail (CAMEL_IS_MEDIUM (medium), NULL); class = CAMEL_MEDIUM_GET_CLASS (medium); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_content != NULL, NULL); return class->get_content (medium); @@ -367,6 +374,7 @@ camel_medium_set_content (CamelMedium *medium, g_return_if_fail (CAMEL_IS_DATA_WRAPPER (content)); class = CAMEL_MEDIUM_GET_CLASS (medium); + g_return_if_fail (class != NULL); g_return_if_fail (class->set_content != NULL); class->set_content (medium, content); diff --git a/src/camel/camel-mime-filter.c b/src/camel/camel-mime-filter.c index 1ea777092..2b4918c5b 100644 --- a/src/camel/camel-mime-filter.c +++ b/src/camel/camel-mime-filter.c @@ -226,6 +226,7 @@ camel_mime_filter_filter (CamelMimeFilter *filter, g_return_if_fail (in != NULL); class = CAMEL_MIME_FILTER_GET_CLASS (filter); + g_return_if_fail (class != NULL); g_return_if_fail (class->filter != NULL); filter_run ( @@ -264,6 +265,7 @@ camel_mime_filter_complete (CamelMimeFilter *filter, g_return_if_fail (in != NULL); class = CAMEL_MIME_FILTER_GET_CLASS (filter); + g_return_if_fail (class != NULL); g_return_if_fail (class->complete != NULL); filter_run ( @@ -285,6 +287,7 @@ camel_mime_filter_reset (CamelMimeFilter *filter) g_return_if_fail (CAMEL_IS_MIME_FILTER (filter)); class = CAMEL_MIME_FILTER_GET_CLASS (filter); + g_return_if_fail (class != NULL); if (class->reset != NULL) class->reset (filter); diff --git a/src/camel/camel-mime-message.c b/src/camel/camel-mime-message.c index bca0f9300..0d0477a98 100644 --- a/src/camel/camel-mime-message.c +++ b/src/camel/camel-mime-message.c @@ -109,7 +109,7 @@ process_header (CamelMedium *medium, const gchar *charset; gchar *unfolded; - header_type = (CamelHeaderType) g_hash_table_lookup (header_name_table, name); + header_type = (CamelHeaderType) GPOINTER_TO_INT (g_hash_table_lookup (header_name_table, name)); switch (header_type) { case HEADER_FROM: addr = camel_internet_address_new (); @@ -1396,6 +1396,8 @@ cmm_dump_rec (CamelMimeMessage *msg, gchar *s; const GByteArray *data; + g_return_if_fail (CAMEL_IS_MIME_PART (part)); + s = alloca (depth + 1); memset (s, ' ', depth); s[depth] = 0; diff --git a/src/camel/camel-mime-parser.c b/src/camel/camel-mime-parser.c index a24160611..8f8ca2943 100644 --- a/src/camel/camel-mime-parser.c +++ b/src/camel/camel-mime-parser.c @@ -1087,13 +1087,9 @@ folder_push_part (struct _header_scan_state *s, } static void -folder_pull_part (struct _header_scan_state *s) +folder_scan_stack_free (struct _header_scan_stack *h) { - struct _header_scan_stack *h; - - h = s->parts; if (h) { - s->parts = h->parent; g_free (h->boundary); #ifdef MEMPOOL camel_mempool_destroy (h->pool); @@ -1108,6 +1104,19 @@ folder_pull_part (struct _header_scan_state *s) if (h->from_line) g_byte_array_free (h->from_line, TRUE); g_free (h); + } +} + +static void +folder_pull_part (struct _header_scan_state *s) +{ + struct _header_scan_stack *h; + + h = s->parts; + if (h) { + s->parts = h->parent; + + folder_scan_stack_free (h); } else { g_warning ("Header stack underflow!\n"); } @@ -1338,7 +1347,11 @@ folder_scan_header (struct _header_scan_state *s, while ((*inptr++) != '\n') ; - g_return_val_if_fail (inptr <= s->inend + 1, NULL); + if (inptr > s->inend + 1) { + g_warn_if_fail (inptr <= s->inend + 1); + folder_scan_stack_free (h); + return NULL; + } /* check for sentinal or real end of line */ if (inptr >= inend) { diff --git a/src/camel/camel-mime-part.c b/src/camel/camel-mime-part.c index 76cbe2a67..d46c3fe71 100644 --- a/src/camel/camel-mime-part.c +++ b/src/camel/camel-mime-part.c @@ -239,31 +239,31 @@ init_header_name_table (void) g_hash_table_insert ( header_name_table, (gpointer) "Content-Description", - (gpointer) HEADER_DESCRIPTION); + GINT_TO_POINTER (HEADER_DESCRIPTION)); g_hash_table_insert ( header_name_table, (gpointer) "Content-Disposition", - (gpointer) HEADER_DISPOSITION); + GINT_TO_POINTER (HEADER_DISPOSITION)); g_hash_table_insert ( header_name_table, (gpointer) "Content-id", - (gpointer) HEADER_CONTENT_ID); + GINT_TO_POINTER (HEADER_CONTENT_ID)); g_hash_table_insert ( header_name_table, (gpointer) "Content-Transfer-Encoding", - (gpointer) HEADER_ENCODING); + GINT_TO_POINTER (HEADER_ENCODING)); g_hash_table_insert ( header_name_table, (gpointer) "Content-MD5", - (gpointer) HEADER_CONTENT_MD5); + GINT_TO_POINTER (HEADER_CONTENT_MD5)); g_hash_table_insert ( header_name_table, (gpointer) "Content-Location", - (gpointer) HEADER_CONTENT_LOCATION); + GINT_TO_POINTER (HEADER_CONTENT_LOCATION)); g_hash_table_insert ( header_name_table, (gpointer) "Content-Type", - (gpointer) HEADER_CONTENT_TYPE); + GINT_TO_POINTER (HEADER_CONTENT_TYPE)); header_formatted_table = g_hash_table_new ( camel_strcase_hash, camel_strcase_equal); @@ -317,7 +317,7 @@ mime_part_process_header (CamelMedium *medium, /* known, the job is done in the parsing routine. If not, */ /* we simply add the header in a raw fashion */ - header_type = (CamelHeaderType) g_hash_table_lookup (header_name_table, name); + header_type = (CamelHeaderType) GPOINTER_TO_INT (g_hash_table_lookup (header_name_table, name)); switch (header_type) { case HEADER_DESCRIPTION: /* raw header->utf8 conversion */ g_free (mime_part->priv->description); @@ -1583,6 +1583,7 @@ camel_mime_part_construct_from_parser_sync (CamelMimePart *mime_part, g_return_val_if_fail (CAMEL_IS_MIME_PARSER (parser), FALSE); class = CAMEL_MIME_PART_GET_CLASS (mime_part); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->construct_from_parser_sync != NULL, FALSE); success = class->construct_from_parser_sync ( diff --git a/src/camel/camel-multipart.c b/src/camel/camel-multipart.c index 3329adac7..e349bbd09 100644 --- a/src/camel/camel-multipart.c +++ b/src/camel/camel-multipart.c @@ -447,6 +447,7 @@ camel_multipart_add_part (CamelMultipart *multipart, g_return_if_fail (CAMEL_IS_MIME_PART (part)); class = CAMEL_MULTIPART_GET_CLASS (multipart); + g_return_if_fail (class != NULL); g_return_if_fail (class->add_part != NULL); class->add_part (multipart, part); @@ -468,6 +469,7 @@ camel_multipart_get_part (CamelMultipart *multipart, g_return_val_if_fail (CAMEL_IS_MULTIPART (multipart), NULL); class = CAMEL_MULTIPART_GET_CLASS (multipart); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_part != NULL, NULL); return class->get_part (multipart, index); @@ -487,6 +489,7 @@ camel_multipart_get_number (CamelMultipart *multipart) g_return_val_if_fail (CAMEL_IS_MULTIPART (multipart), 0); class = CAMEL_MULTIPART_GET_CLASS (multipart); + g_return_val_if_fail (class != NULL, 0); g_return_val_if_fail (class->get_number != NULL, 0); return class->get_number (multipart); @@ -506,6 +509,7 @@ camel_multipart_get_boundary (CamelMultipart *multipart) g_return_val_if_fail (CAMEL_IS_MULTIPART (multipart), NULL); class = CAMEL_MULTIPART_GET_CLASS (multipart); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_boundary != NULL, NULL); return class->get_boundary (multipart); @@ -530,6 +534,7 @@ camel_multipart_set_boundary (CamelMultipart *multipart, g_return_if_fail (CAMEL_IS_MULTIPART (multipart)); class = CAMEL_MULTIPART_GET_CLASS (multipart); + g_return_if_fail (class != NULL); g_return_if_fail (class->set_boundary != NULL); class->set_boundary (multipart, boundary); @@ -636,6 +641,7 @@ camel_multipart_construct_from_parser (CamelMultipart *multipart, g_return_val_if_fail (CAMEL_IS_MIME_PARSER (mp), -1); class = CAMEL_MULTIPART_GET_CLASS (multipart); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->construct_from_parser != NULL, -1); return class->construct_from_parser (multipart, mp); diff --git a/src/camel/camel-object.c b/src/camel/camel-object.c index ea7a0b88f..6f9003d61 100644 --- a/src/camel/camel-object.c +++ b/src/camel/camel-object.c @@ -428,6 +428,7 @@ camel_object_state_read (CamelObject *object) g_return_val_if_fail (CAMEL_IS_OBJECT (object), -1); class = CAMEL_OBJECT_GET_CLASS (object); + g_return_val_if_fail (class != NULL, -1); state_filename = camel_object_get_state_filename (object); if (state_filename == NULL) @@ -464,6 +465,7 @@ camel_object_state_write (CamelObject *object) g_return_val_if_fail (CAMEL_IS_OBJECT (object), -1); class = CAMEL_OBJECT_GET_CLASS (object); + g_return_val_if_fail (class != NULL, -1); state_filename = camel_object_get_state_filename (object); if (state_filename == NULL) diff --git a/src/camel/camel-offline-folder.c b/src/camel/camel-offline-folder.c index 3aa5cd80b..5e631d4c3 100644 --- a/src/camel/camel-offline-folder.c +++ b/src/camel/camel-offline-folder.c @@ -643,6 +643,7 @@ camel_offline_folder_downsync_sync (CamelOfflineFolder *folder, g_return_val_if_fail (CAMEL_IS_OFFLINE_FOLDER (folder), FALSE); class = CAMEL_OFFLINE_FOLDER_GET_CLASS (folder); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->downsync_sync != NULL, FALSE); success = class->downsync_sync ( diff --git a/src/camel/camel-provider.c b/src/camel/camel-provider.c index ba7a87de9..602b378d1 100644 --- a/src/camel/camel-provider.c +++ b/src/camel/camel-provider.c @@ -202,7 +202,6 @@ camel_provider_init (void) GDir *dir; const gchar *entry; gchar *p, *name, buf[80]; - CamelProviderModule *m; static gint loaded = 0; const gchar *provider_dir; @@ -226,6 +225,7 @@ camel_provider_init (void) } while ((entry = g_dir_read_name (dir))) { + CamelProviderModule *m = NULL; FILE *fp; p = strrchr (entry, '.'); @@ -246,9 +246,6 @@ camel_provider_init (void) if (p) strcpy (p, "." G_MODULE_SUFFIX); - m = g_malloc0 (sizeof (*m)); - m->path = name; - while ((fgets (buf, sizeof (buf), fp))) { buf[sizeof (buf) - 1] = '\0'; p = strchr (buf, '\n'); @@ -258,11 +255,18 @@ camel_provider_init (void) if (*buf) { gchar *protocol = g_strdup (buf); + if (!m) { + m = g_malloc0 (sizeof (*m)); + m->path = name; + } + m->types = g_slist_prepend (m->types, protocol); g_hash_table_insert (module_table, protocol, m); } } + if (!m) + g_free (name); fclose (fp); } diff --git a/src/camel/camel-sasl.c b/src/camel/camel-sasl.c index 6c0dd9b9f..12b4be146 100644 --- a/src/camel/camel-sasl.c +++ b/src/camel/camel-sasl.c @@ -88,18 +88,18 @@ sasl_build_class_table_rec (GType type, children = g_type_children (type, &n_children); for (ii = 0; ii < n_children; ii++) { - GType type = children[ii]; + GType child_type = children[ii]; CamelSaslClass *sasl_class; gpointer key; /* Recurse over the child's children. */ - sasl_build_class_table_rec (type, class_table); + sasl_build_class_table_rec (child_type, class_table); /* Skip abstract types. */ - if (G_TYPE_IS_ABSTRACT (type)) + if (G_TYPE_IS_ABSTRACT (child_type)) continue; - sasl_class = g_type_class_ref (type); + sasl_class = g_type_class_ref (child_type); if (sasl_class->auth_type == NULL) { g_critical ( @@ -421,6 +421,7 @@ camel_sasl_try_empty_password_sync (CamelSasl *sasl, g_return_val_if_fail (CAMEL_IS_SASL (sasl), FALSE); class = CAMEL_SASL_GET_CLASS (sasl); + g_return_val_if_fail (class != NULL, FALSE); if (class->try_empty_password_sync == NULL) return FALSE; @@ -607,6 +608,7 @@ camel_sasl_challenge_sync (CamelSasl *sasl, g_return_val_if_fail (CAMEL_IS_SASL (sasl), NULL); class = CAMEL_SASL_GET_CLASS (sasl); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->challenge_sync != NULL, NULL); response = class->challenge_sync (sasl, token, cancellable, error); diff --git a/src/camel/camel-service.c b/src/camel/camel-service.c index 45d6e9e8f..aff79a580 100644 --- a/src/camel/camel-service.c +++ b/src/camel/camel-service.c @@ -1437,6 +1437,7 @@ camel_service_get_name (CamelService *service, g_return_val_if_fail (CAMEL_IS_SERVICE (service), NULL); class = CAMEL_SERVICE_GET_CLASS (service); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_name != NULL, NULL); return class->get_name (service, brief); @@ -1610,6 +1611,7 @@ camel_service_set_settings (CamelService *service, g_return_if_fail (CAMEL_IS_SERVICE (service)); class = CAMEL_SERVICE_GET_CLASS (service); + g_return_if_fail (class != NULL); if (settings != NULL) { g_return_if_fail ( @@ -2093,9 +2095,8 @@ camel_service_authenticate_sync (CamelService *service, CAMEL_AUTHENTICATION_ERROR); class = CAMEL_SERVICE_GET_CLASS (service); - g_return_val_if_fail ( - class->authenticate_sync != NULL, - CAMEL_AUTHENTICATION_ERROR); + g_return_val_if_fail (class != NULL, CAMEL_AUTHENTICATION_ERROR); + g_return_val_if_fail (class->authenticate_sync != NULL, CAMEL_AUTHENTICATION_ERROR); result = class->authenticate_sync ( service, mechanism, cancellable, error); @@ -2255,6 +2256,7 @@ camel_service_query_auth_types_sync (CamelService *service, g_return_val_if_fail (CAMEL_IS_SERVICE (service), NULL); class = CAMEL_SERVICE_GET_CLASS (service); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->query_auth_types_sync != NULL, NULL); return class->query_auth_types_sync (service, cancellable, error); diff --git a/src/camel/camel-session.c b/src/camel/camel-session.c index 74634a933..4431d7ad5 100644 --- a/src/camel/camel-session.c +++ b/src/camel/camel-session.c @@ -916,6 +916,7 @@ camel_session_add_service (CamelSession *session, g_return_val_if_fail (protocol != NULL, NULL); class = CAMEL_SESSION_GET_CLASS (session); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->add_service != NULL, NULL); service = class->add_service (session, uid, protocol, type, error); @@ -943,6 +944,7 @@ camel_session_remove_service (CamelSession *session, g_return_if_fail (CAMEL_IS_SERVICE (service)); class = CAMEL_SESSION_GET_CLASS (session); + g_return_if_fail (class != NULL); g_return_if_fail (class->remove_service != NULL); class->remove_service (session, service); @@ -1172,6 +1174,7 @@ camel_session_get_password (CamelSession *session, g_return_val_if_fail (item != NULL, NULL); class = CAMEL_SESSION_GET_CLASS (session); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_password != NULL, NULL); password = class->get_password ( @@ -1212,6 +1215,7 @@ camel_session_forget_password (CamelSession *session, g_return_val_if_fail (item != NULL, FALSE); class = CAMEL_SESSION_GET_CLASS (session); + g_return_val_if_fail (class, FALSE); g_return_val_if_fail (class->forget_password, FALSE); success = class->forget_password (session, service, item, error); @@ -1247,16 +1251,13 @@ camel_session_trust_prompt (CamelSession *session, { CamelSessionClass *class; - g_return_val_if_fail ( - CAMEL_IS_SESSION (session), CAMEL_CERT_TRUST_UNKNOWN); - g_return_val_if_fail ( - CAMEL_IS_SERVICE (service), CAMEL_CERT_TRUST_UNKNOWN); - g_return_val_if_fail ( - G_IS_TLS_CERTIFICATE (certificate), CAMEL_CERT_TRUST_UNKNOWN); + g_return_val_if_fail (CAMEL_IS_SESSION (session), CAMEL_CERT_TRUST_UNKNOWN); + g_return_val_if_fail (CAMEL_IS_SERVICE (service), CAMEL_CERT_TRUST_UNKNOWN); + g_return_val_if_fail (G_IS_TLS_CERTIFICATE (certificate), CAMEL_CERT_TRUST_UNKNOWN); class = CAMEL_SESSION_GET_CLASS (session); - g_return_val_if_fail ( - class->trust_prompt != NULL, CAMEL_CERT_TRUST_UNKNOWN); + g_return_val_if_fail (class != NULL, CAMEL_CERT_TRUST_UNKNOWN); + g_return_val_if_fail (class->trust_prompt != NULL, CAMEL_CERT_TRUST_UNKNOWN); return class->trust_prompt (session, service, certificate, errors); } @@ -1323,6 +1324,7 @@ camel_session_lookup_addressbook (CamelSession *session, g_return_val_if_fail (name != NULL, FALSE); class = CAMEL_SESSION_GET_CLASS (session); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->lookup_addressbook != NULL, FALSE); return class->lookup_addressbook (session, name); @@ -1388,6 +1390,7 @@ camel_session_get_filter_driver (CamelSession *session, g_return_val_if_fail (type != NULL, NULL); class = CAMEL_SESSION_GET_CLASS (session); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_filter_driver != NULL, NULL); driver = class->get_filter_driver (session, type, for_folder, error); @@ -1648,6 +1651,7 @@ camel_session_authenticate_sync (CamelSession *session, g_return_val_if_fail (CAMEL_IS_SERVICE (service), FALSE); class = CAMEL_SESSION_GET_CLASS (session); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->authenticate_sync != NULL, FALSE); success = class->authenticate_sync ( @@ -1801,6 +1805,7 @@ camel_session_forward_to_sync (CamelSession *session, g_return_val_if_fail (address != NULL, FALSE); class = CAMEL_SESSION_GET_CLASS (session); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->forward_to_sync != NULL, FALSE); success = class->forward_to_sync ( @@ -1953,6 +1958,7 @@ camel_session_get_oauth2_access_token_sync (CamelSession *session, g_return_val_if_fail (CAMEL_IS_SESSION (session), FALSE); klass = CAMEL_SESSION_GET_CLASS (session); + g_return_val_if_fail (klass != NULL, FALSE); g_return_val_if_fail (klass->get_oauth2_access_token_sync != NULL, FALSE); return klass->get_oauth2_access_token_sync (session, service, out_access_token, out_expires_in, cancellable, error); diff --git a/src/camel/camel-settings.c b/src/camel/camel-settings.c index fdeb8e768..db10a4f96 100644 --- a/src/camel/camel-settings.c +++ b/src/camel/camel-settings.c @@ -44,6 +44,8 @@ settings_clone (CamelSettings *settings) guint ii, n_properties; class = CAMEL_SETTINGS_GET_CLASS (settings); + g_return_val_if_fail (class != NULL, NULL); + properties = camel_settings_class_list_settings (class, &n_properties); parameters = g_new0 (GParameter, n_properties); @@ -91,6 +93,8 @@ settings_equal (CamelSettings *settings_a, value_b = g_slice_new0 (GValue); class = CAMEL_SETTINGS_GET_CLASS (settings_a); + g_return_val_if_fail (class != NULL, FALSE); + properties = camel_settings_class_list_settings (class, &n_properties); for (ii = 0; equal && ii < n_properties; ii++) { @@ -182,6 +186,7 @@ camel_settings_clone (CamelSettings *settings) g_return_val_if_fail (CAMEL_IS_SETTINGS (settings), NULL); class = CAMEL_SETTINGS_GET_CLASS (settings); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->clone != NULL, NULL); clone = class->clone (settings); @@ -217,6 +222,7 @@ camel_settings_equal (CamelSettings *settings_a, g_return_val_if_fail (CAMEL_IS_SETTINGS (settings_b), FALSE); class = CAMEL_SETTINGS_GET_CLASS (settings_a); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->equal != NULL, FALSE); return class->equal (settings_a, settings_b); diff --git a/src/camel/camel-sexp.c b/src/camel/camel-sexp.c index a0afff020..8ad03ed5e 100644 --- a/src/camel/camel-sexp.c +++ b/src/camel/camel-sexp.c @@ -808,7 +808,7 @@ camel_sexp_term_eval (CamelSExp *sexp, CamelSExpTerm *term) { CamelSExpResult *result = NULL; - gint i; + gint i, argc; CamelSExpResult **argv; /* this must only be called from inside term evaluation callbacks! */ @@ -846,15 +846,16 @@ camel_sexp_term_eval (CamelSExp *sexp, break; case CAMEL_SEXP_TERM_FUNC: /* first evaluate all arguments to result types */ - argv = alloca (sizeof (argv[0]) * term->value.func.termcount); - for (i = 0; i < term->value.func.termcount; i++) { + argc = term->value.func.termcount; + argv = g_alloca (sizeof (argv[0]) * argc); + for (i = 0; i < argc; i++) { argv[i] = camel_sexp_term_eval (sexp, term->value.func.terms[i]); } /* call the function */ if (term->value.func.sym->f.func) - result = term->value.func.sym->f.func (sexp, term->value.func.termcount, argv, term->value.func.sym->data); + result = term->value.func.sym->f.func (sexp, argc, argv, term->value.func.sym->data); - camel_sexp_resultv_free (sexp, term->value.func.termcount, argv); + camel_sexp_resultv_free (sexp, argc, argv); break; default: camel_sexp_fatal_error (sexp, "Unknown type in parse tree: %d", term->type); @@ -1186,9 +1187,9 @@ camel_sexp_term_evaluate_occur_times (CamelSExp *sexp, result = camel_sexp_result_new (sexp, CAMEL_SEXP_RES_UNDEFINED); argc = term->value.func.termcount; - argv = alloca (sizeof (argv[0]) * argc); + argv = g_alloca (sizeof (argv[0]) * argc); - for (i = 0; i < term->value.func.termcount; i++) { + for (i = 0; i < argc; i++) { argv[i] = camel_sexp_term_evaluate_occur_times ( sexp, term->value.func.terms[i], start, end); } @@ -1196,8 +1197,7 @@ camel_sexp_term_evaluate_occur_times (CamelSExp *sexp, if (is_time_function (term->value.func.sym->name)) { /* evaluate time */ if (term->value.func.sym->f.func) - result = term->value.func.sym->f.func (sexp, term->value.func.termcount, - argv, term->value.func.sym->data); + result = term->value.func.sym->f.func (sexp, argc, argv, term->value.func.sym->data); } else if ((generator = get_generator_function (term->value.func.sym->name)) != NULL) { /* evaluate generator function */ result->time_generator = TRUE; @@ -1210,7 +1210,7 @@ camel_sexp_term_evaluate_occur_times (CamelSExp *sexp, result->time_generator = FALSE; } - camel_sexp_resultv_free (sexp, term->value.func.termcount, argv); + camel_sexp_resultv_free (sexp, argc, argv); break; } case CAMEL_SEXP_TERM_INT: @@ -1304,8 +1304,20 @@ parse_values (CamelSExp *sexp, terms = g_malloc (size * sizeof (*terms)); l = list; for (i = size - 1; i >= 0; i--) { - g_return_val_if_fail (l, NULL); - g_return_val_if_fail (l->data, NULL); + if (!l || !l->data) { + if (!l) + g_warn_if_fail (l != NULL); + if (l && !l->data) + g_warn_if_fail (l->data != NULL); + + g_slist_free (list); + g_free (terms); + + *len = 0; + + return NULL; + } + terms[i] = l->data; l = g_slist_next (l); } diff --git a/src/camel/camel-store-summary.c b/src/camel/camel-store-summary.c index 5c21950e1..b78e068c7 100644 --- a/src/camel/camel-store-summary.c +++ b/src/camel/camel-store-summary.c @@ -230,6 +230,7 @@ store_summary_store_info_free (CamelStoreSummary *summary, CamelStoreSummaryClass *class; class = CAMEL_STORE_SUMMARY_GET_CLASS (summary); + g_return_if_fail (class != NULL); g_free (info->path); g_slice_free1 (class->store_info_size, info); @@ -449,6 +450,7 @@ camel_store_summary_load (CamelStoreSummary *summary) g_return_val_if_fail (summary->priv->summary_path != NULL, -1); class = CAMEL_STORE_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->store_info_load != NULL, -1); in = g_fopen (summary->priv->summary_path, "rb"); @@ -513,6 +515,7 @@ camel_store_summary_save (CamelStoreSummary *summary) g_return_val_if_fail (summary->priv->summary_path != NULL, -1); class = CAMEL_STORE_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->summary_header_save != NULL, -1); io (printf ("** saving summary\n")); @@ -638,6 +641,7 @@ camel_store_summary_add_from_path (CamelStoreSummary *summary, CamelStoreSummaryClass *class; class = CAMEL_STORE_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->store_info_new != NULL, NULL); info = class->store_info_new (summary, path); @@ -692,6 +696,7 @@ camel_store_summary_info_unref (CamelStoreSummary *summary, CamelStoreSummaryClass *class; class = CAMEL_STORE_SUMMARY_GET_CLASS (summary); + g_return_if_fail (class != NULL); g_return_if_fail (class->store_info_free != NULL); class->store_info_free (summary, info); @@ -785,6 +790,7 @@ camel_store_summary_info_new (CamelStoreSummary *summary) g_return_val_if_fail (CAMEL_IS_STORE_SUMMARY (summary), NULL); class = CAMEL_STORE_SUMMARY_GET_CLASS (summary); + g_return_val_if_fail (class > 0, NULL); g_return_val_if_fail (class->store_info_size > 0, NULL); info = g_slice_alloc0 (class->store_info_size); @@ -814,6 +820,7 @@ camel_store_info_set_string (CamelStoreSummary *summary, g_return_if_fail (info != NULL); class = CAMEL_STORE_SUMMARY_GET_CLASS (summary); + g_return_if_fail (class != NULL); g_return_if_fail (class->store_info_set_string != NULL); g_rec_mutex_lock (&summary->priv->summary_lock); diff --git a/src/camel/camel-store.c b/src/camel/camel-store.c index 8b3b97dc0..a9bcb9ffb 100644 --- a/src/camel/camel-store.c +++ b/src/camel/camel-store.c @@ -361,6 +361,7 @@ store_constructed (GObject *object) store = CAMEL_STORE (object); class = CAMEL_STORE_GET_CLASS (store); + g_return_if_fail (class != NULL); g_return_if_fail (class->hash_folder_name != NULL); g_return_if_fail (class->equal_folder_name != NULL); @@ -387,6 +388,7 @@ store_get_inbox_folder_sync (CamelStore *store, CamelFolder *folder; class = CAMEL_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_folder_sync != NULL, NULL); /* Assume the inbox's name is "inbox" and open with default flags. */ @@ -1170,12 +1172,21 @@ camel_folder_info_build (GPtrArray *folders, gchar *p, *pname; gint i, nlen; + if (!folders) { + g_warn_if_fail (folders != NULL); + return NULL; + } + + if (!folders->pdata || !folders->len) { + g_warn_if_fail (folders->pdata != NULL); + return NULL; + } + if (namespace_ == NULL) namespace_ = ""; nlen = strlen (namespace_); - if (folders->pdata && folders->len) - qsort (folders->pdata, folders->len, sizeof (folders->pdata[0]), folder_info_cmp); + qsort (folders->pdata, folders->len, sizeof (folders->pdata[0]), folder_info_cmp); /* Hash the folders. */ hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); @@ -1318,6 +1329,7 @@ camel_store_can_refresh_folder (CamelStore *store, g_return_val_if_fail (info != NULL, FALSE); class = CAMEL_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->can_refresh_folder != NULL, FALSE); return class->can_refresh_folder (store, info, error); @@ -1359,6 +1371,7 @@ camel_store_get_folder_sync (CamelStore *store, g_return_val_if_fail (folder_name != NULL, NULL); class = CAMEL_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); try_again: /* Try cache first. */ @@ -1397,6 +1410,13 @@ try_again: } } + if (folder_name_is_vtrash) + g_return_val_if_fail (class->get_trash_folder_sync != NULL, NULL); + else if (folder_name_is_vjunk) + g_return_val_if_fail (class->get_junk_folder_sync != NULL, NULL); + else + g_return_val_if_fail (class->get_folder_sync != NULL, NULL); + camel_operation_push_message ( cancellable, _("Opening folder “%s”"), folder_name); @@ -1494,6 +1514,7 @@ try_again: reversed_name = g_strreverse (g_strdup (folder_name)); child_and_parent = g_strsplit (reversed_name, "/", 2); g_return_val_if_fail (child_and_parent[0] != NULL, NULL); + g_return_val_if_fail (class->create_folder_sync != NULL, NULL); /* Element 0 is the new folder name. * Element 1 is the parent path, or NULL. */ @@ -1689,6 +1710,7 @@ camel_store_get_folder_info_sync (CamelStore *store, g_return_val_if_fail (CAMEL_IS_STORE (store), NULL); class = CAMEL_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_folder_info_sync != NULL, NULL); name = camel_service_get_name (CAMEL_SERVICE (store), TRUE); @@ -1950,6 +1972,7 @@ camel_store_get_inbox_folder_sync (CamelStore *store, g_return_val_if_fail (CAMEL_IS_STORE (store), NULL); class = CAMEL_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_inbox_folder_sync != NULL, NULL); folder = class->get_inbox_folder_sync (store, cancellable, error); @@ -2072,6 +2095,7 @@ camel_store_get_junk_folder_sync (CamelStore *store, CamelFolder *folder; class = CAMEL_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_junk_folder_sync != NULL, NULL); folder = class->get_junk_folder_sync (store, cancellable, error); @@ -2198,6 +2222,7 @@ camel_store_get_trash_folder_sync (CamelStore *store, CamelFolder *folder; class = CAMEL_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_trash_folder_sync != NULL, NULL); folder = class->get_trash_folder_sync ( @@ -2369,6 +2394,7 @@ store_create_folder_thread (GTask *task, folder_name = async_context->folder_name_2; class = CAMEL_STORE_GET_CLASS (store); + g_return_if_fail (class != NULL); g_return_if_fail (class->create_folder_sync != NULL); if (parent_name == NULL || *parent_name == '\0') { @@ -2556,6 +2582,7 @@ store_delete_folder_thread (GTask *task, folder_name = async_context->folder_name_1; class = CAMEL_STORE_GET_CLASS (store); + g_return_if_fail (class != NULL); g_return_if_fail (class->delete_folder_sync != NULL); reserved_vfolder_name = @@ -2741,6 +2768,7 @@ store_rename_folder_thread (GTask *task, new_name = async_context->folder_name_2; class = CAMEL_STORE_GET_CLASS (store); + g_return_if_fail (class != NULL); g_return_if_fail (class->rename_folder_sync != NULL); if (g_str_equal (old_name, new_name)) { @@ -2959,6 +2987,7 @@ camel_store_synchronize_sync (CamelStore *store, g_return_val_if_fail (CAMEL_IS_STORE (store), FALSE); class = CAMEL_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->synchronize_sync != NULL, FALSE); success = class->synchronize_sync (store, expunge, cancellable, error); @@ -3107,6 +3136,7 @@ camel_store_initial_setup_sync (CamelStore *store, *out_save_setup = NULL; class = CAMEL_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->initial_setup_sync != NULL, FALSE); save_setup = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); diff --git a/src/camel/camel-stream.c b/src/camel/camel-stream.c index 2243dc7a8..a6c6d0c44 100644 --- a/src/camel/camel-stream.c +++ b/src/camel/camel-stream.c @@ -504,6 +504,7 @@ camel_stream_read (CamelStream *stream, g_return_val_if_fail (n == 0 || buffer, -1); class = CAMEL_STREAM_GET_CLASS (stream); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->read != NULL, -1); n_bytes = class->read (stream, buffer, n, cancellable, error); @@ -539,6 +540,7 @@ camel_stream_write (CamelStream *stream, g_return_val_if_fail (n == 0 || buffer, -1); class = CAMEL_STREAM_GET_CLASS (stream); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->write != NULL, -1); n_bytes = class->write (stream, buffer, n, cancellable, error); @@ -569,6 +571,7 @@ camel_stream_flush (CamelStream *stream, g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1); class = CAMEL_STREAM_GET_CLASS (stream); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->flush != NULL, -1); retval = class->flush (stream, cancellable, error); @@ -598,6 +601,7 @@ camel_stream_close (CamelStream *stream, g_return_val_if_fail (CAMEL_IS_STREAM (stream), -1); class = CAMEL_STREAM_GET_CLASS (stream); + g_return_val_if_fail (class != NULL, -1); g_return_val_if_fail (class->close != NULL, -1); retval = class->close (stream, cancellable, error); @@ -622,6 +626,7 @@ camel_stream_eos (CamelStream *stream) g_return_val_if_fail (CAMEL_IS_STREAM (stream), TRUE); class = CAMEL_STREAM_GET_CLASS (stream); + g_return_val_if_fail (class != NULL, TRUE); g_return_val_if_fail (class->eos != NULL, TRUE); return class->eos (stream); diff --git a/src/camel/camel-vee-folder.c b/src/camel/camel-vee-folder.c index b735c2537..4b1487010 100644 --- a/src/camel/camel-vee-folder.c +++ b/src/camel/camel-vee-folder.c @@ -577,9 +577,15 @@ subfolder_changed (CamelFolder *subfolder, CamelFolderChangeInfo *changes, CamelVeeFolder *vfolder) { + CamelVeeFolderClass *klass; + g_return_if_fail (vfolder != NULL); g_return_if_fail (CAMEL_IS_VEE_FOLDER (vfolder)); + klass = CAMEL_VEE_FOLDER_GET_CLASS (vfolder); + g_return_if_fail (klass != NULL); + g_return_if_fail (klass->folder_changed != NULL); + g_rec_mutex_lock (&vfolder->priv->changed_lock); if (g_hash_table_lookup (vfolder->priv->ignore_changed, subfolder) || !camel_vee_folder_get_auto_update (vfolder)) { @@ -599,7 +605,7 @@ subfolder_changed (CamelFolder *subfolder, } g_rec_mutex_unlock (&vfolder->priv->changed_lock); - CAMEL_VEE_FOLDER_GET_CLASS (vfolder)->folder_changed (vfolder, subfolder, changes); + klass->folder_changed (vfolder, subfolder, changes); } /* track vanishing folders */ @@ -723,6 +729,7 @@ vee_folder_propagate_skipped_changes (CamelVeeFolder *vf) g_return_if_fail (vf != NULL); class = CAMEL_VEE_FOLDER_GET_CLASS (vf); + g_return_if_fail (class != NULL); g_rec_mutex_lock (&vf->priv->changed_lock); @@ -1448,9 +1455,15 @@ void camel_vee_folder_set_expression (CamelVeeFolder *vfolder, const gchar *expression) { + CamelVeeFolderClass *klass; + g_return_if_fail (CAMEL_IS_VEE_FOLDER (vfolder)); - CAMEL_VEE_FOLDER_GET_CLASS (vfolder)->set_expression (vfolder, expression); + klass = CAMEL_VEE_FOLDER_GET_CLASS (vfolder); + g_return_if_fail (klass != NULL); + g_return_if_fail (klass->set_expression != NULL); + + klass->set_expression (vfolder, expression); } /** @@ -1482,8 +1495,14 @@ camel_vee_folder_add_folder (CamelVeeFolder *vfolder, CamelFolder *subfolder, GCancellable *cancellable) { + CamelVeeFolderClass *klass; + g_return_if_fail (CAMEL_IS_VEE_FOLDER (vfolder)); + klass = CAMEL_VEE_FOLDER_GET_CLASS (vfolder); + g_return_if_fail (klass != NULL); + g_return_if_fail (klass->add_folder != NULL); + if (vfolder == (CamelVeeFolder *) subfolder) { g_warning ("Adding a virtual folder to itself as source, ignored"); return; @@ -1517,7 +1536,7 @@ camel_vee_folder_add_folder (CamelVeeFolder *vfolder, subfolder, "deleted", G_CALLBACK (subfolder_deleted), vfolder); - CAMEL_VEE_FOLDER_GET_CLASS (vfolder)->add_folder (vfolder, subfolder, cancellable); + klass->add_folder (vfolder, subfolder, cancellable); } /** @@ -1533,10 +1552,15 @@ camel_vee_folder_remove_folder (CamelVeeFolder *vfolder, CamelFolder *subfolder, GCancellable *cancellable) { + CamelVeeFolderClass *klass; gint freeze_count; g_return_if_fail (CAMEL_IS_VEE_FOLDER (vfolder)); + klass = CAMEL_VEE_FOLDER_GET_CLASS (vfolder); + g_return_if_fail (klass != NULL); + g_return_if_fail (klass->remove_folder != NULL); + g_rec_mutex_lock (&vfolder->priv->subfolder_lock); if (g_list_find (vfolder->priv->subfolders, subfolder) == NULL) { @@ -1557,7 +1581,7 @@ camel_vee_folder_remove_folder (CamelVeeFolder *vfolder, g_rec_mutex_unlock (&vfolder->priv->subfolder_lock); - CAMEL_VEE_FOLDER_GET_CLASS (vfolder)->remove_folder (vfolder, subfolder, cancellable); + klass->remove_folder (vfolder, subfolder, cancellable); g_object_unref (subfolder); } @@ -1575,9 +1599,17 @@ camel_vee_folder_rebuild_folder (CamelVeeFolder *vfolder, CamelFolder *subfolder, GCancellable *cancellable) { + CamelVeeFolderClass *klass; + + g_return_if_fail (CAMEL_IS_VEE_FOLDER (vfolder)); + + klass = CAMEL_VEE_FOLDER_GET_CLASS (vfolder); + g_return_if_fail (klass != NULL); + g_return_if_fail (klass->rebuild_folder != NULL); + vee_folder_propagate_skipped_changes (vfolder); - CAMEL_VEE_FOLDER_GET_CLASS (vfolder)->rebuild_folder (vfolder, subfolder, cancellable); + klass->rebuild_folder (vfolder, subfolder, cancellable); } static void diff --git a/src/camel/camel-vee-store.c b/src/camel/camel-vee-store.c index 122f56920..1d786db13 100644 --- a/src/camel/camel-vee-store.c +++ b/src/camel/camel-vee-store.c @@ -286,10 +286,17 @@ vee_store_get_folder_info_sync (CamelStore *store, d (printf ("Get folder info '%s'\n", top ? top:"<null>")); - infos_hash = g_hash_table_new (g_str_hash, g_str_equal); folders = camel_store_dup_opened_folders (store); - if (folders->pdata && folders->len) - qsort (folders->pdata, folders->len, sizeof (folders->pdata[0]), vee_folder_cmp); + if (!folders || !folders->pdata || !folders->len) { + if (folders) + g_ptr_array_free (folders, TRUE); + + return NULL; + } + + qsort (folders->pdata, folders->len, sizeof (folders->pdata[0]), vee_folder_cmp); + + infos_hash = g_hash_table_new (g_str_hash, g_str_equal); for (i = 0; i < folders->len; i++) { CamelVeeFolder *folder = folders->pdata[i]; const gchar *full_name; @@ -1064,8 +1071,9 @@ vee_store_rebuild_unmatched_folder (CamelSession *session, camel_folder_changed (unmatched_folder, changes); camel_folder_change_info_free (changes); - /* coverity[unchecked_value] */ - g_cancellable_set_error_if_cancelled (cancellable, error); + /* Just to mute CHECKED_RETURN warning */ + if (g_cancellable_set_error_if_cancelled (cancellable, error)) + return; } /** diff --git a/src/camel/providers/imapx/camel-imapx-search.c b/src/camel/providers/imapx/camel-imapx-search.c index 29245d927..3f2100d5d 100644 --- a/src/camel/providers/imapx/camel-imapx-search.c +++ b/src/camel/providers/imapx/camel-imapx-search.c @@ -181,19 +181,12 @@ imapx_search_process_criteria (CamelSExp *sexp, ((mailbox == NULL) && (local_error != NULL)), NULL); if (mailbox != NULL) { - CamelIMAPXStore *imapx_store; CamelIMAPXConnManager *conn_man; - imapx_store = camel_imapx_search_ref_store (imapx_search); - - /* there should always be one, held by one of the callers of this function */ - g_warn_if_fail (imapx_store != NULL); - conn_man = camel_imapx_store_get_conn_manager (imapx_store); uids = camel_imapx_conn_manager_uid_search_sync (conn_man, mailbox, criteria_prefix->str, search_key, words ? (const gchar * const *) words->pdata : NULL, imapx_search->priv->cancellable, &local_error); - g_clear_object (&imapx_store); g_object_unref (mailbox); } diff --git a/src/camel/providers/imapx/camel-imapx-server.c b/src/camel/providers/imapx/camel-imapx-server.c index f413d6708..633938253 100644 --- a/src/camel/providers/imapx/camel-imapx-server.c +++ b/src/camel/providers/imapx/camel-imapx-server.c @@ -1093,7 +1093,11 @@ imapx_untagged_fetch (CamelIMAPXServer *is, gconstpointer body_data; gsize body_size; - g_return_val_if_fail (is->priv->get_message_stream != NULL, FALSE); + if (!is->priv->get_message_stream) { + g_warn_if_fail (is->priv->get_message_stream != NULL); + imapx_free_fetch (finfo); + return FALSE; + } /* Fill out the body stream, in the right spot. */ @@ -1130,9 +1134,15 @@ imapx_untagged_fetch (CamelIMAPXServer *is, CamelIMAPXMailbox *select_pending; if (is->priv->fetch_changes_mailbox) { - g_return_val_if_fail (is->priv->fetch_changes_mailbox != NULL, FALSE); - g_return_val_if_fail (is->priv->fetch_changes_folder != NULL, FALSE); - g_return_val_if_fail (is->priv->fetch_changes_infos != NULL, FALSE); + if (!is->priv->fetch_changes_mailbox || + !is->priv->fetch_changes_folder || + !is->priv->fetch_changes_infos) { + g_warn_if_fail (is->priv->fetch_changes_mailbox != NULL); + g_warn_if_fail (is->priv->fetch_changes_folder != NULL); + g_warn_if_fail (is->priv->fetch_changes_infos != NULL); + imapx_free_fetch (finfo); + return FALSE; + } } g_mutex_lock (&is->priv->select_lock); @@ -1167,12 +1177,15 @@ imapx_untagged_fetch (CamelIMAPXServer *is, COMMAND_LOCK (is); if (is->priv->current_command) { + guint32 n_messages; + COMMAND_UNLOCK (is); is->priv->fetch_changes_last_progress = monotonic_time; - camel_operation_progress (cancellable, 100 * is->priv->context->id - / camel_imapx_mailbox_get_messages (is->priv->fetch_changes_mailbox)); + n_messages = camel_imapx_mailbox_get_messages (is->priv->fetch_changes_mailbox); + if (n_messages > 0) + camel_operation_progress (cancellable, 100 * is->priv->context->id / n_messages); } else { COMMAND_UNLOCK (is); } @@ -1186,7 +1199,15 @@ imapx_untagged_fetch (CamelIMAPXServer *is, c (is->priv->tagprefix, "flag changed: %lu\n", is->priv->context->id); select_folder = imapx_server_ref_folder (is, select_mailbox); - g_return_val_if_fail (select_folder != NULL, FALSE); + if (!select_folder) { + g_warn_if_fail (select_folder != NULL); + + g_clear_object (&select_mailbox); + g_clear_object (&select_pending); + imapx_free_fetch (finfo); + + return FALSE; + } if (finfo->got & FETCH_UID) { uid = finfo->uid; @@ -1216,10 +1237,11 @@ imapx_untagged_fetch (CamelIMAPXServer *is, } if (changed) { - g_return_val_if_fail (is->priv->changes != NULL, FALSE); - g_mutex_lock (&is->priv->changes_lock); - camel_folder_change_info_change_uid (is->priv->changes, uid); + if (is->priv->changes) + camel_folder_change_info_change_uid (is->priv->changes, uid); + else + g_warn_if_fail (is->priv->changes != NULL); g_mutex_unlock (&is->priv->changes_lock); } g_free (uid); @@ -1258,9 +1280,15 @@ imapx_untagged_fetch (CamelIMAPXServer *is, * asked for new messages to be added to the index. */ if (is->priv->fetch_changes_mailbox) { - g_return_val_if_fail (is->priv->fetch_changes_mailbox != NULL, FALSE); - g_return_val_if_fail (is->priv->fetch_changes_folder != NULL, FALSE); - g_return_val_if_fail (is->priv->fetch_changes_infos != NULL, FALSE); + if (!is->priv->fetch_changes_mailbox || + !is->priv->fetch_changes_folder || + !is->priv->fetch_changes_infos) { + g_warn_if_fail (is->priv->fetch_changes_mailbox != NULL); + g_warn_if_fail (is->priv->fetch_changes_folder != NULL); + g_warn_if_fail (is->priv->fetch_changes_infos != NULL); + imapx_free_fetch (finfo); + return FALSE; + } folder = g_object_ref (is->priv->fetch_changes_folder); mailbox = g_object_ref (is->priv->fetch_changes_mailbox); @@ -1301,7 +1329,17 @@ imapx_untagged_fetch (CamelIMAPXServer *is, FetchChangesInfo *nfo; nfo = g_hash_table_lookup (is->priv->fetch_changes_infos, finfo->uid); - g_return_val_if_fail (nfo != NULL, FALSE); + if (!nfo) { + g_warn_if_fail (nfo != NULL); + + camel_message_info_set_abort_notifications (mi, FALSE); + g_clear_object (&mi); + g_clear_object (&mailbox); + g_clear_object (&folder); + imapx_free_fetch (finfo); + + return FALSE; + } server_flags = nfo->server_flags; server_user_flags = nfo->server_user_flags; @@ -2123,7 +2161,11 @@ imapx_continuation (CamelIMAPXServer *is, /* coverity[deadcode] */ link = ic ? ic->current_part : NULL; - g_return_val_if_fail (link != NULL, FALSE); + if (!link) { + g_warn_if_fail (link != NULL); + return FALSE; + } + cp = (CamelIMAPXCommandPart *) link->data; switch (cp->type & CAMEL_IMAPX_COMMAND_MASK) { @@ -4386,7 +4428,9 @@ camel_imapx_server_copy_message_sync (CamelIMAPXServer *is, if (camel_imapx_mailbox_get_permanentflags (destination) == ~0) { /* To get permanent flags. That's okay if the "SELECT" fails here, as it can be due to the folder being write-only; just ignore the error and continue. */ - camel_imapx_server_ensure_selected_sync (is, destination, cancellable, NULL); + if (!camel_imapx_server_ensure_selected_sync (is, destination, cancellable, NULL)) { + ; + } } if (g_cancellable_set_error_if_cancelled (cancellable, error)) @@ -4450,7 +4494,7 @@ camel_imapx_server_copy_message_sync (CamelIMAPXServer *is, break; } - imapx_uidset_done (&uidset, ic); + g_warn_if_fail (imapx_uidset_done (&uidset, ic)); camel_imapx_command_add (ic, " %M", destination); @@ -4713,7 +4757,9 @@ camel_imapx_server_append_message_sync (CamelIMAPXServer *is, /* That's okay if the "SELECT" fails here, as it can be due to the folder being write-only; just ignore the error and continue. */ - camel_imapx_server_ensure_selected_sync (is, mailbox, cancellable, NULL); + if (!camel_imapx_server_ensure_selected_sync (is, mailbox, cancellable, NULL)) { + ; + } if (g_cancellable_set_error_if_cancelled (cancellable, error)) return FALSE; @@ -4840,7 +4886,7 @@ camel_imapx_server_append_message_sync (CamelIMAPXServer *is, if (success) { CamelIMAPXFolder *imapx_folder; CamelFolder *folder; - CamelMessageInfo *mi; + CamelMessageInfo *clone; gchar *cur, *old_uid; guint32 uidvalidity; @@ -4857,7 +4903,7 @@ camel_imapx_server_append_message_sync (CamelIMAPXServer *is, * numbered MessageInfo, without losing any information. Otherwise * we have to wait for the server to let us know it was appended. */ - mi = camel_message_info_clone (info, camel_folder_get_folder_summary (folder)); + clone = camel_message_info_clone (info, camel_folder_get_folder_summary (folder)); old_uid = g_strdup (camel_message_info_get_uid (info)); if (ic->status && ic->status->condition == IMAPX_APPENDUID) { @@ -4866,7 +4912,7 @@ camel_imapx_server_append_message_sync (CamelIMAPXServer *is, gchar *uid; uid = g_strdup_printf ("%u", ic->status->u.appenduid.uid); - camel_message_info_set_uid (mi, uid); + camel_message_info_set_uid (clone, uid); cur = camel_data_cache_get_filename (imapx_folder->cache, "cur", uid); if (g_rename (path, cur) == -1 && errno != ENOENT) { @@ -4874,17 +4920,17 @@ camel_imapx_server_append_message_sync (CamelIMAPXServer *is, } imapx_set_message_info_flags_for_new_message ( - mi, + clone, camel_message_info_get_flags (info), camel_message_info_get_user_flags (info), TRUE, camel_message_info_get_user_tags (info), camel_imapx_mailbox_get_permanentflags (mailbox)); - camel_folder_summary_add (camel_folder_get_folder_summary (folder), mi, TRUE); + camel_folder_summary_add (camel_folder_get_folder_summary (folder), clone, TRUE); g_mutex_lock (&is->priv->changes_lock); - camel_folder_change_info_add_uid (is->priv->changes, camel_message_info_get_uid (mi)); + camel_folder_change_info_add_uid (is->priv->changes, camel_message_info_get_uid (clone)); g_mutex_unlock (&is->priv->changes_lock); camel_folder_summary_save (camel_folder_get_folder_summary (folder), NULL); @@ -4894,7 +4940,7 @@ camel_imapx_server_append_message_sync (CamelIMAPXServer *is, else g_free (uid); - g_clear_object (&mi); + g_clear_object (&clone); g_free (cur); } else { @@ -4906,7 +4952,7 @@ camel_imapx_server_append_message_sync (CamelIMAPXServer *is, g_free (old_uid); camel_imapx_command_unref (ic); - g_clear_object (&mi); + g_clear_object (&clone); g_object_unref (folder); } diff --git a/src/camel/providers/local/camel-local-private.c b/src/camel/providers/local/camel-local-private.c index f19c784aa..71a71d759 100644 --- a/src/camel/providers/local/camel-local-private.c +++ b/src/camel/providers/local/camel-local-private.c @@ -42,11 +42,20 @@ camel_local_frompos_sort (gpointer enc, sa2 = g_realloc (sa2, len2 + 1); l2 = len2 + 1; } - strncpy (sa1, data1, len1); sa1[len1] = 0; - strncpy (sa2, data2, len2); sa2[len2] = 0; - a1 = strtoul (sa1, NULL, 10); - a2 = strtoul (sa2, NULL, 10); + if (sa1) { + strncpy (sa1, data1, len1); sa1[len1] = 0; + a1 = strtoul (sa1, NULL, 10); + } else { + a1 = 0; + } + + if (sa2) { + strncpy (sa2, data2, len2); sa2[len2] = 0; + a2 = strtoul (sa2, NULL, 10); + } else { + a2 = 0; + } return a1 - a2; } diff --git a/src/camel/providers/local/camel-local-store.c b/src/camel/providers/local/camel-local-store.c index 8323db40b..88e7abbf3 100644 --- a/src/camel/providers/local/camel-local-store.c +++ b/src/camel/providers/local/camel-local-store.c @@ -725,6 +725,7 @@ camel_local_store_get_full_path (CamelLocalStore *store, /* XXX Guard against full_name == NULL? */ class = CAMEL_LOCAL_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_full_path != NULL, NULL); return class->get_full_path (store, full_name); @@ -742,6 +743,7 @@ camel_local_store_get_meta_path (CamelLocalStore *store, /* XXX Guard against ext == NULL? */ class = CAMEL_LOCAL_STORE_GET_CLASS (store); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_meta_path != NULL, NULL); return class->get_meta_path (store, full_name, ext); diff --git a/src/camel/providers/local/camel-maildir-folder.c b/src/camel/providers/local/camel-maildir-folder.c index 9e6b259c7..89007a025 100644 --- a/src/camel/providers/local/camel-maildir-folder.c +++ b/src/camel/providers/local/camel-maildir-folder.c @@ -115,9 +115,9 @@ maildir_folder_get_filename (CamelFolder *folder, * name based on actual flags. */ if (!camel_maildir_message_info_get_filename (mdi)) { - const gchar *uid = camel_message_info_get_uid (info); + const gchar *info_uid = camel_message_info_get_uid (info); - if (uid) { + if (info_uid) { GDir *dir; gchar *dirname; @@ -127,10 +127,10 @@ maildir_folder_get_filename (CamelFolder *folder, if (dir) { const gchar *filename; - gint uid_len = strlen (uid); + gint uid_len = strlen (info_uid); while (filename = g_dir_read_name (dir), filename) { - if (g_str_has_prefix (filename, uid) && (filename[uid_len] == '\0' || filename[uid_len] == CAMEL_MAILDIR_FLAG_SEP)) { + if (g_str_has_prefix (filename, info_uid) && (filename[uid_len] == '\0' || filename[uid_len] == CAMEL_MAILDIR_FLAG_SEP)) { camel_maildir_message_info_take_filename (mdi, g_strdup (filename)); break; } diff --git a/src/camel/providers/local/camel-maildir-store.c b/src/camel/providers/local/camel-maildir-store.c index 5861d5768..9611e0169 100644 --- a/src/camel/providers/local/camel-maildir-store.c +++ b/src/camel/providers/local/camel-maildir-store.c @@ -1159,6 +1159,7 @@ scan_old_dir_info (CamelStore *store, if (stat (tmp, &st) == 0 && S_ISDIR (st.st_mode)) { struct _scan_node in; + memset (&in, 0, sizeof (struct _scan_node)); in.dnode = st.st_dev; in.inode = st.st_ino; diff --git a/src/camel/providers/local/camel-mbox-summary.c b/src/camel/providers/local/camel-mbox-summary.c index b0d94cd8d..a33f8a081 100644 --- a/src/camel/providers/local/camel-mbox-summary.c +++ b/src/camel/providers/local/camel-mbox-summary.c @@ -1130,10 +1130,10 @@ camel_mbox_summary_sync_mbox (CamelMboxSummary *cls, header = camel_mime_parser_dup_headers (mp); xevnew = camel_local_summary_encode_x_evolution ((CamelLocalSummary *) cls, info); if (mbs->xstatus) { - guint32 flags = camel_message_info_get_flags (info); + guint32 info_flags = camel_message_info_get_flags (info); - encode_status (flags & STATUS_STATUS, statnew); - encode_status (flags & STATUS_XSTATUS, xstatnew); + encode_status (info_flags & STATUS_STATUS, statnew); + encode_status (info_flags & STATUS_XSTATUS, xstatnew); len = camel_local_summary_write_headers (fdout, header, xevnew, statnew, xstatnew); } else { diff --git a/src/camel/providers/pop3/camel-pop3-folder.c b/src/camel/providers/pop3/camel-pop3-folder.c index 9998625b9..0931a0d37 100644 --- a/src/camel/providers/pop3/camel-pop3-folder.c +++ b/src/camel/providers/pop3/camel-pop3-folder.c @@ -903,7 +903,9 @@ pop3_folder_synchronize_sync (CamelFolder *folder, if (g_cancellable_is_cancelled (cancellable)) { if (error && !*error) { /* coverity[unchecked_value] */ - g_cancellable_set_error_if_cancelled (cancellable, error); + if (g_cancellable_set_error_if_cancelled (cancellable, error)) { + ; + } } return FALSE; } diff --git a/src/camel/providers/pop3/camel-pop3-store.c b/src/camel/providers/pop3/camel-pop3-store.c index 77d97404e..3f565424b 100644 --- a/src/camel/providers/pop3/camel-pop3-store.c +++ b/src/camel/providers/pop3/camel-pop3-store.c @@ -340,7 +340,9 @@ try_sasl (CamelPOP3Store *store, || (resp = (guchar *) camel_sasl_challenge_base64_sync (sasl, (const gchar *) line + 2, cancellable, &local_error)) == NULL) { if (camel_stream_write_string (CAMEL_STREAM (pop3_stream), "*\r\n", cancellable, NULL)) { /* coverity[unchecked_value] */ - camel_pop3_stream_line (pop3_stream, &line, &len, cancellable, NULL); + if (!camel_pop3_stream_line (pop3_stream, &line, &len, cancellable, NULL)) { + ; + } } if (local_error) { diff --git a/src/camel/tests/lib/messages.c b/src/camel/tests/lib/messages.c index ea7b0a0dc..211e7aa1b 100644 --- a/src/camel/tests/lib/messages.c +++ b/src/camel/tests/lib/messages.c @@ -312,9 +312,9 @@ message_dump_rec (CamelMimeMessage *msg, if (CAMEL_IS_MULTIPART (containee)) { parts = camel_multipart_get_number (CAMEL_MULTIPART (containee)); for (i = 0; i < parts; i++) { - CamelMimePart *part = camel_multipart_get_part (CAMEL_MULTIPART (containee), i); + CamelMimePart *subpart = camel_multipart_get_part (CAMEL_MULTIPART (containee), i); - message_dump_rec (msg, part, depth + 1); + message_dump_rec (msg, subpart, depth + 1); } } else if (CAMEL_IS_MIME_MESSAGE (containee)) { message_dump_rec (msg, (CamelMimePart *) containee, depth + 1); diff --git a/src/libebackend/e-backend-factory.c b/src/libebackend/e-backend-factory.c index e9b8493d2..87936b3a5 100644 --- a/src/libebackend/e-backend-factory.c +++ b/src/libebackend/e-backend-factory.c @@ -79,6 +79,7 @@ e_backend_factory_get_hash_key (EBackendFactory *factory) g_return_val_if_fail (E_IS_BACKEND_FACTORY (factory), NULL); class = E_BACKEND_FACTORY_GET_CLASS (factory); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->get_hash_key != NULL, NULL); return class->get_hash_key (factory); @@ -105,6 +106,7 @@ e_backend_factory_new_backend (EBackendFactory *factory, g_return_val_if_fail (E_IS_SOURCE (source), NULL); class = E_BACKEND_FACTORY_GET_CLASS (factory); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->new_backend != NULL, NULL); return class->new_backend (factory, source); @@ -129,6 +131,7 @@ e_backend_factory_get_module_filename (EBackendFactory *factory) g_return_val_if_fail (E_IS_BACKEND_FACTORY (factory), NULL); class = E_BACKEND_FACTORY_GET_CLASS (factory); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->e_module != NULL, NULL); return e_module_get_filename (class->e_module); @@ -154,6 +157,7 @@ e_backend_factory_share_subprocess (EBackendFactory *factory) g_return_val_if_fail (E_IS_BACKEND_FACTORY (factory), FALSE); class = E_BACKEND_FACTORY_GET_CLASS (factory); + g_return_val_if_fail (class != NULL, FALSE); return class->share_subprocess; } diff --git a/src/libebackend/e-backend.c b/src/libebackend/e-backend.c index 31c1be9b4..ed40cc099 100644 --- a/src/libebackend/e-backend.c +++ b/src/libebackend/e-backend.c @@ -270,6 +270,7 @@ e_backend_authenticate_sync (EBackend *backend, g_return_val_if_fail (credentials != NULL, E_SOURCE_AUTHENTICATION_ERROR); class = E_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, E_SOURCE_AUTHENTICATION_ERROR); g_return_val_if_fail (class->authenticate_sync != NULL, E_SOURCE_AUTHENTICATION_ERROR); return class->authenticate_sync (backend, credentials, out_certificate_pem, out_certificate_errors, cancellable, error); @@ -1475,6 +1476,7 @@ e_backend_get_destination_address (EBackend *backend, g_return_val_if_fail (port != NULL, FALSE); klass = E_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (klass != NULL, FALSE); g_return_val_if_fail (klass->get_destination_address != NULL, FALSE); return klass->get_destination_address (backend, host, port); @@ -1554,6 +1556,7 @@ e_backend_prepare_shutdown (EBackend *backend) g_return_if_fail (E_IS_BACKEND (backend)); class = E_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->prepare_shutdown != NULL); g_object_ref (backend); diff --git a/src/libebackend/e-cache.c b/src/libebackend/e-cache.c index e36808d2b..e683da119 100644 --- a/src/libebackend/e-cache.c +++ b/src/libebackend/e-cache.c @@ -2059,7 +2059,7 @@ e_cache_foreach_update_cb (ECache *cache, fu->rows = g_slist_prepend (fu->rows, rd); - g_return_val_if_fail ((gint) fu->column_names->len != ncols, FALSE); + g_return_val_if_fail (fu->column_names && (gint) fu->column_names->len != ncols, FALSE); return TRUE; } diff --git a/src/libebackend/e-collection-backend-factory.c b/src/libebackend/e-collection-backend-factory.c index 122f0654f..5c44285be 100644 --- a/src/libebackend/e-collection-backend-factory.c +++ b/src/libebackend/e-collection-backend-factory.c @@ -58,6 +58,7 @@ collection_backend_factory_get_hash_key (EBackendFactory *factory) gsize length; class = E_COLLECTION_BACKEND_FACTORY_GET_CLASS (factory); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->factory_name != NULL, NULL); component_name = E_SOURCE_EXTENSION_COLLECTION; @@ -80,8 +81,8 @@ collection_backend_factory_new_backend (EBackendFactory *factory, ESourceRegistryServer *server; class = E_COLLECTION_BACKEND_FACTORY_GET_CLASS (factory); - g_return_val_if_fail (g_type_is_a ( - class->backend_type, E_TYPE_COLLECTION_BACKEND), NULL); + g_return_val_if_fail (class != NULL, NULL); + g_return_val_if_fail (g_type_is_a (class->backend_type, E_TYPE_COLLECTION_BACKEND), NULL); server = collection_backend_factory_get_server (factory); @@ -187,6 +188,7 @@ e_collection_backend_factory_prepare_mail (ECollectionBackendFactory *factory, g_return_if_fail (E_IS_SOURCE (mail_transport_source)); class = E_COLLECTION_BACKEND_FACTORY_GET_CLASS (factory); + g_return_if_fail (class != NULL); g_return_if_fail (class->prepare_mail != NULL); class->prepare_mail ( diff --git a/src/libebackend/e-collection-backend.c b/src/libebackend/e-collection-backend.c index 4fa459e73..1001db90d 100644 --- a/src/libebackend/e-collection-backend.c +++ b/src/libebackend/e-collection-backend.c @@ -249,6 +249,7 @@ collection_backend_load_resources (ECollectionBackend *backend) * and e_source_registry_server_load_directory(). */ class = E_COLLECTION_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->dup_resource_id != NULL); cache_dir = e_collection_backend_get_cache_dir (backend); @@ -557,6 +558,7 @@ collection_backend_populate_idle_cb (gpointer user_data) backend->priv->scheduled_populate_idle_id = 0; class = E_COLLECTION_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->populate != NULL, FALSE); class->populate (backend); @@ -1371,6 +1373,7 @@ e_collection_backend_dup_resource_id (ECollectionBackend *backend, g_return_val_if_fail (E_IS_SOURCE (child_source), NULL); class = E_COLLECTION_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->dup_resource_id != NULL, NULL); /* Make sure the ESource belongs to the ECollectionBackend to @@ -1610,6 +1613,7 @@ e_collection_backend_create_resource_sync (ECollectionBackend *backend, g_return_val_if_fail (E_IS_SOURCE (source), FALSE); class = E_COLLECTION_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->create_resource_sync != NULL, FALSE); return class->create_resource_sync ( @@ -1657,6 +1661,7 @@ e_collection_backend_create_resource (ECollectionBackend *backend, g_return_if_fail (E_IS_SOURCE (source)); class = E_COLLECTION_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->create_resource != NULL); class->create_resource ( @@ -1688,6 +1693,7 @@ e_collection_backend_create_resource_finish (ECollectionBackend *backend, g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE); class = E_COLLECTION_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->create_resource_finish != NULL, FALSE); return class->create_resource_finish (backend, result, error); @@ -1726,6 +1732,7 @@ e_collection_backend_delete_resource_sync (ECollectionBackend *backend, g_return_val_if_fail (E_IS_SOURCE (source), FALSE); class = E_COLLECTION_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->delete_resource_sync != NULL, FALSE); return class->delete_resource_sync ( @@ -1767,6 +1774,7 @@ e_collection_backend_delete_resource (ECollectionBackend *backend, g_return_if_fail (E_IS_SOURCE (source)); class = E_COLLECTION_BACKEND_GET_CLASS (backend); + g_return_if_fail (class != NULL); g_return_if_fail (class->delete_resource != NULL); return class->delete_resource ( @@ -1798,6 +1806,7 @@ e_collection_backend_delete_resource_finish (ECollectionBackend *backend, g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE); class = E_COLLECTION_BACKEND_GET_CLASS (backend); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->delete_resource_finish != NULL, FALSE); return class->delete_resource_finish (backend, result, error); diff --git a/src/libebackend/e-data-factory.c b/src/libebackend/e-data-factory.c index 0da6628d1..dfcb93312 100644 --- a/src/libebackend/e-data-factory.c +++ b/src/libebackend/e-data-factory.c @@ -194,6 +194,7 @@ data_factory_construct_subprocess_path (EDataFactory *data_factory) g_atomic_int_inc (&counter); class = E_DATA_FACTORY_GET_CLASS (data_factory); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->subprocess_object_path_prefix != NULL, NULL); return g_strdup_printf ( @@ -212,6 +213,7 @@ data_factory_construct_subprocess_bus_name (EDataFactory *data_factory) g_atomic_int_inc (&counter); class = E_DATA_FACTORY_GET_CLASS (data_factory); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->subprocess_bus_name_prefix != NULL, NULL); /* We use the format "%sx%d%u" because we want to be really safe about @@ -567,6 +569,7 @@ data_factory_call_subprocess_backend_create_sync (EDataFactory *data_factory, data_factory, sender, proxy); class = E_DATA_FACTORY_GET_CLASS (data_factory); + g_return_if_fail (class != NULL); g_return_if_fail (class->complete_open != NULL); class->complete_open (data_factory, invocation, object_path, bus_name, extension_name); @@ -709,6 +712,8 @@ data_factory_bus_acquired (EDBusServer *server, GError *error = NULL; class = E_DATA_FACTORY_GET_CLASS (E_DATA_FACTORY (server)); + g_return_if_fail (class != NULL); + g_return_if_fail (class->get_dbus_interface_skeleton != NULL); skeleton_interface = class->get_dbus_interface_skeleton (server); @@ -832,6 +837,8 @@ data_factory_quit_server (EDBusServer *server, } class = E_DATA_FACTORY_GET_CLASS (E_DATA_FACTORY (server)); + g_return_if_fail (class != NULL); + g_return_if_fail (class->get_dbus_interface_skeleton != NULL); skeleton_interface = class->get_dbus_interface_skeleton (server); if (skeleton_interface && g_dbus_interface_skeleton_get_connection (skeleton_interface)) @@ -974,11 +981,13 @@ data_factory_constructed (GObject *object) GList *list, *link; data_factory = E_DATA_FACTORY (object); - class = E_DATA_FACTORY_GET_CLASS (data_factory); /* Chain up to parent's constructed() method. */ G_OBJECT_CLASS (e_data_factory_parent_class)->constructed (object); + class = E_DATA_FACTORY_GET_CLASS (data_factory); + g_return_if_fail (class != NULL); + /* Collect all backend factories into a hash table. */ list = e_extensible_list_extensions ( @@ -1221,6 +1230,7 @@ e_data_factory_construct_path (EDataFactory *data_factory) g_atomic_int_inc (&counter); class = E_DATA_FACTORY_GET_CLASS (data_factory); + g_return_val_if_fail (class != NULL, NULL); g_return_val_if_fail (class->data_object_path_prefix != NULL, NULL); return g_strdup_printf ( @@ -1239,6 +1249,7 @@ data_factory_spawn_subprocess_backend (EDataFactory *data_factory, DataFactorySubprocessData *sd = NULL; EBackendFactory *backend_factory = NULL; EDataFactoryClass *class; + EDBusServerClass *server_class; ESource *source; EDataFactoryPrivate *priv; GError *error = NULL; @@ -1256,6 +1267,14 @@ data_factory_spawn_subprocess_backend (EDataFactory *data_factory, g_return_if_fail (extension_name != NULL && *extension_name != '\0'); g_return_if_fail (subprocess_path != NULL && *subprocess_path != '\0'); + class = E_DATA_FACTORY_GET_CLASS (data_factory); + g_return_if_fail (class != NULL); + g_return_if_fail (class->complete_open != NULL); + g_return_if_fail (class->get_factory_name != NULL); + + server_class = E_DBUS_SERVER_GET_CLASS (data_factory); + g_return_if_fail (server_class != NULL); + priv = data_factory->priv; source = e_source_registry_ref_source (priv->registry, uid); @@ -1279,7 +1298,6 @@ data_factory_spawn_subprocess_backend (EDataFactory *data_factory, type_name = G_OBJECT_TYPE_NAME (backend_factory); - class = E_DATA_FACTORY_GET_CLASS (data_factory); factory_name = class->get_factory_name (backend_factory); subprocess_helpers_hash_key = data_factory_dup_subprocess_helper_hash_key ( diff --git a/src/libebackend/e-dbus-server.c b/src/libebackend/e-dbus-server.c index 2fa2697ab..ba77f0017 100644 --- a/src/libebackend/e-dbus-server.c +++ b/src/libebackend/e-dbus-server.c @@ -202,6 +202,7 @@ dbus_server_bus_name_acquired (EDBusServer *server, EDBusServerClass *class; class = E_DBUS_SERVER_GET_CLASS (server); + g_return_if_fail (class != NULL); g_return_if_fail (class->bus_name != NULL); e_source_registry_debug_print ("Bus name '%s' acquired.\n", class->bus_name); @@ -214,6 +215,7 @@ dbus_server_bus_name_lost (EDBusServer *server, EDBusServerClass *class; class = E_DBUS_SERVER_GET_CLASS (server); + g_return_if_fail (class != NULL); g_return_if_fail (class->bus_name != NULL); e_source_registry_debug_print ("Bus name '%s' lost.\n", class->bus_name); @@ -229,9 +231,8 @@ dbus_server_run_server (EDBusServer *server) /* Try to acquire the well-known bus name. */ class = E_DBUS_SERVER_GET_CLASS (server); - g_return_val_if_fail ( - class->bus_name != NULL, - E_DBUS_SERVER_EXIT_NONE); + g_return_val_if_fail (class != NULL, E_DBUS_SERVER_EXIT_NONE); + g_return_val_if_fail (class->bus_name != NULL, E_DBUS_SERVER_EXIT_NONE); server->priv->bus_owner_id = g_bus_own_name ( G_BUS_TYPE_SESSION, @@ -608,6 +609,7 @@ e_dbus_server_load_modules (EDBusServer *server) g_return_if_fail (E_IS_DBUS_SERVER (server)); class = E_DBUS_SERVER_GET_CLASS (server); + g_return_if_fail (class != NULL); g_return_if_fail (class->module_directory != NULL); /* This ensures a module directory is only loaded once. */ diff --git a/src/libebackend/e-subprocess-factory.c b/src/libebackend/e-subprocess-factory.c index 514d490c5..9654fc835 100644 --- a/src/libebackend/e-subprocess-factory.c +++ b/src/libebackend/e-subprocess-factory.c @@ -258,6 +258,10 @@ e_subprocess_factory_ref_initable_backend (ESubprocessFactory *subprocess_factor g_return_val_if_fail (backend_factory_type_name != NULL && *backend_factory_type_name != '\0', NULL); g_return_val_if_fail (module_filename != NULL && *module_filename != '\0', NULL); + class = E_SUBPROCESS_FACTORY_GET_CLASS (subprocess_factory); + g_return_val_if_fail (class != NULL, NULL); + g_return_val_if_fail (class->ref_backend != NULL, NULL); + priv = subprocess_factory->priv; g_mutex_lock (&priv->mutex); @@ -290,8 +294,6 @@ e_subprocess_factory_ref_initable_backend (ESubprocessFactory *subprocess_factor goto exit; } - class = E_SUBPROCESS_FACTORY_GET_CLASS (subprocess_factory); - backend = class->ref_backend (registry, source, backend_factory_type_name); if (backend == NULL) { @@ -397,15 +399,17 @@ e_subprocess_factory_open_backend (ESubprocessFactory *subprocess_factory, g_return_val_if_fail (module_filename != NULL && *module_filename != '\0', NULL); g_return_val_if_fail (E_DBUS_SUBPROCESS_IS_BACKEND (proxy), NULL); + class = E_SUBPROCESS_FACTORY_GET_CLASS (subprocess_factory); + g_return_val_if_fail (class != NULL, NULL); + g_return_val_if_fail (class->open_data != NULL, NULL); + backend = e_subprocess_factory_ref_initable_backend ( subprocess_factory, uid, backend_factory_type_name, module_filename, cancellable, error); if (backend == NULL) return NULL; - class = E_SUBPROCESS_FACTORY_GET_CLASS (subprocess_factory); - object_path = class->open_data ( - subprocess_factory, backend, connection, proxy, cancellable, error); + object_path = class->open_data (subprocess_factory, backend, connection, proxy, cancellable, error); g_clear_object (&backend); diff --git a/src/libebackend/e-user-prompter-server-extension.c b/src/libebackend/e-user-prompter-server-extension.c index e0f85c897..8c1e4fc66 100644 --- a/src/libebackend/e-user-prompter-server-extension.c +++ b/src/libebackend/e-user-prompter-server-extension.c @@ -39,6 +39,7 @@ #include <string.h> +#include "e-user-prompter-server.h" #include "e-user-prompter-server-extension.h" #define E_USER_PROMPTER_SERVER_EXTENSION_GET_PRIVATE(obj) \ @@ -73,7 +74,8 @@ user_prompter_server_extension_constructed (GObject *object) server = E_USER_PROMPTER_SERVER (extensible); klass = E_USER_PROMPTER_SERVER_EXTENSION_GET_CLASS (extension); - g_return_if_fail (klass->register_dialogs); + g_return_if_fail (klass != NULL); + g_return_if_fail (klass->register_dialogs != NULL); klass->register_dialogs (extension, server); } @@ -138,6 +140,7 @@ e_user_prompter_server_extension_prompt (EUserPrompterServerExtension *extension g_return_val_if_fail (E_IS_USER_PROMPTER_SERVER_EXTENSION (extension), FALSE); klass = E_USER_PROMPTER_SERVER_EXTENSION_GET_CLASS (extension); + g_return_val_if_fail (klass != NULL, FALSE); g_return_val_if_fail (klass->prompt != NULL, FALSE); return klass->prompt (extension, prompt_id, dialog_name, parameters); diff --git a/src/libebackend/e-user-prompter-server-extension.h b/src/libebackend/e-user-prompter-server-extension.h index e60d34e5c..5131dd655 100644 --- a/src/libebackend/e-user-prompter-server-extension.h +++ b/src/libebackend/e-user-prompter-server-extension.h @@ -18,7 +18,7 @@ #ifndef E_USER_PROMPTER_SERVER_EXTENSION_H #define E_USER_PROMPTER_SERVER_EXTENSION_H -#include <libebackend/libebackend.h> +#include <libedataserver/libedataserver.h> /* Standard GObject macros */ #define E_TYPE_USER_PROMPTER_SERVER_EXTENSION \ diff --git a/src/libebackend/e-user-prompter-server.c b/src/libebackend/e-user-prompter-server.c index 7a22034bc..1a72a117c 100644 --- a/src/libebackend/e-user-prompter-server.c +++ b/src/libebackend/e-user-prompter-server.c @@ -33,6 +33,7 @@ /* Private D-Bus classes. */ #include "e-dbus-user-prompter.h" +#include "e-user-prompter-server-extension.h" #include "e-user-prompter-server.h" #define E_USER_PROMPTER_SERVER_GET_PRIVATE(obj) \ diff --git a/src/libebackend/e-user-prompter-server.h b/src/libebackend/e-user-prompter-server.h index 9088e8c48..2a78e449e 100644 --- a/src/libebackend/e-user-prompter-server.h +++ b/src/libebackend/e-user-prompter-server.h @@ -18,8 +18,8 @@ #ifndef E_USER_PROMPTER_SERVER_H #define E_USER_PROMPTER_SERVER_H -#include <libebackend/libebackend.h> #include <libedataserver/libedataserver.h> +#include <libebackend/e-dbus-server.h> /* Standard GObject macros */ #define E_TYPE_USER_PROMPTER_SERVER \ diff --git a/src/libebackend/e-user-prompter.h b/src/libebackend/e-user-prompter.h index 43d562718..ffd6e4a33 100644 --- a/src/libebackend/e-user-prompter.h +++ b/src/libebackend/e-user-prompter.h @@ -23,7 +23,6 @@ #define E_USER_PROMPTER_H #include <glib.h> -#include <libebackend/libebackend.h> #include <libedataserver/libedataserver.h> /* Standard GObject macros */ diff --git a/src/libedataserver/e-collator.c b/src/libedataserver/e-collator.c index 334b8f192..718eac5da 100644 --- a/src/libedataserver/e-collator.c +++ b/src/libedataserver/e-collator.c @@ -498,6 +498,7 @@ e_collator_generate_key (ECollator *collator, if (!source) { g_free (translit_str); + g_free (free_me); return NULL; } diff --git a/src/libedataserver/e-extension.c b/src/libedataserver/e-extension.c index 3133c9c68..1242355d4 100644 --- a/src/libedataserver/e-extension.c +++ b/src/libedataserver/e-extension.c @@ -71,6 +71,8 @@ extension_set_extensible (EExtension *extension, g_return_if_fail (extension->priv->extensible == NULL); class = E_EXTENSION_GET_CLASS (extension); + g_return_if_fail (class != NULL); + extensible_type = G_OBJECT_TYPE (extensible); /* Verify the EExtensible object is the type we want. */ diff --git a/src/libedataserver/e-proxy.c b/src/libedataserver/e-proxy.c index a51c465d7..883379a60 100644 --- a/src/libedataserver/e-proxy.c +++ b/src/libedataserver/e-proxy.c @@ -533,7 +533,6 @@ ep_parse_ignore_host (gpointer data, SoupAddress *addr; guint status; gchar *input, *netmask, *hostname; - ProxyHostAddr *host_addr; gboolean has_error = FALSE; if (!proxy || !proxy->priv) @@ -552,6 +551,7 @@ ep_parse_ignore_host (gpointer data, addr = soup_address_new (hostname, 0); status = soup_address_resolve_sync (addr, NULL); if (status == SOUP_STATUS_OK) { + ProxyHostAddr *host_addr; gint addr_len; struct sockaddr * so_addr = NULL; @@ -562,8 +562,10 @@ ep_parse_ignore_host (gpointer data, /* This will never happen, since we have already called * soup_address_resolve_sync (). */ - if (!so_addr) + if (!so_addr) { + ep_free_proxy_host_addr (host_addr); goto error; + } if (so_addr->sa_family == AF_INET) has_error = ep_manipulate_ipv4 ( @@ -582,6 +584,7 @@ ep_parse_ignore_host (gpointer data, priv->ign_hosts = g_slist_append ( priv->ign_hosts, hostname); } else { + ep_free_proxy_host_addr (host_addr); g_free (hostname); } } else { diff --git a/src/libedataserver/e-sexp.c b/src/libedataserver/e-sexp.c index 92304522b..f49c0786d 100644 --- a/src/libedataserver/e-sexp.c +++ b/src/libedataserver/e-sexp.c @@ -795,7 +795,7 @@ e_sexp_term_eval (ESExp *sexp, break; case ESEXP_TERM_FUNC: /* first evaluate all arguments to result types */ - argv = alloca (sizeof (argv[0]) * t->value.func.termcount); + argv = g_alloca (sizeof (argv[0]) * t->value.func.termcount); for (i = 0; i < t->value.func.termcount; i++) { argv[i] = e_sexp_term_eval (sexp, t->value.func.terms[i]); } @@ -1137,9 +1137,9 @@ e_sexp_term_evaluate_occur_times (ESExp *sexp, r = e_sexp_result_new (sexp, ESEXP_RES_UNDEFINED); argc = t->value.func.termcount; - argv = alloca (sizeof (argv[0]) * argc); + argv = g_alloca (sizeof (argv[0]) * argc); - for (i = 0; i < t->value.func.termcount; i++) { + for (i = 0; i < argc; i++) { argv[i] = e_sexp_term_evaluate_occur_times ( sexp, t->value.func.terms[i], start, end); } @@ -1147,8 +1147,7 @@ e_sexp_term_evaluate_occur_times (ESExp *sexp, if (is_time_function (t->value.func.sym->name)) { /* evaluate time */ if (t->value.func.sym->f.func) - r = t->value.func.sym->f.func (sexp, t->value.func.termcount, - argv, t->value.func.sym->data); + r = t->value.func.sym->f.func (sexp, argc, argv, t->value.func.sym->data); } else if ((generator = get_generator_function (t->value.func.sym->name)) != NULL) { /* evaluate generator function */ r->time_generator = TRUE; @@ -1161,7 +1160,7 @@ e_sexp_term_evaluate_occur_times (ESExp *sexp, r->time_generator = FALSE; } - e_sexp_resultv_free (sexp, t->value.func.termcount, argv); + e_sexp_resultv_free (sexp, argc, argv); break; } case ESEXP_TERM_INT: @@ -1252,8 +1251,20 @@ parse_values (ESExp *sexp, terms = g_malloc (size * sizeof (*terms)); l = list; for (i = size - 1; i >= 0; i--) { - g_return_val_if_fail (l, NULL); - g_return_val_if_fail (l->data, NULL); + if (!l || !l->data) { + if (!l) + g_warn_if_fail (l != NULL); + if (l && !l->data) + g_warn_if_fail (l->data != NULL); + + g_slist_free (list); + g_free (terms); + + *len = 0; + + return NULL; + } + terms[i] = l->data; l = g_slist_next (l); } diff --git a/src/libedataserver/e-source-credentials-provider-impl.c b/src/libedataserver/e-source-credentials-provider-impl.c index 6c4498b50..8e3b438dd 100644 --- a/src/libedataserver/e-source-credentials-provider-impl.c +++ b/src/libedataserver/e-source-credentials-provider-impl.c @@ -152,6 +152,7 @@ e_source_credentials_provider_impl_can_process (ESourceCredentialsProviderImpl * g_return_val_if_fail (E_IS_SOURCE (source), FALSE); klass = E_SOURCE_CREDENTIALS_PROVIDER_IMPL_GET_CLASS (provider_impl); + g_return_val_if_fail (klass != NULL, FALSE); g_return_val_if_fail (klass->can_process != NULL, FALSE); return klass->can_process (provider_impl, source); @@ -175,6 +176,7 @@ e_source_credentials_provider_impl_can_store (ESourceCredentialsProviderImpl *pr g_return_val_if_fail (E_IS_SOURCE_CREDENTIALS_PROVIDER_IMPL (provider_impl), FALSE); klass = E_SOURCE_CREDENTIALS_PROVIDER_IMPL_GET_CLASS (provider_impl); + g_return_val_if_fail (klass != NULL, FALSE); g_return_val_if_fail (klass->can_store != NULL, FALSE); return klass->can_store (provider_impl); @@ -198,6 +200,7 @@ e_source_credentials_provider_impl_can_prompt (ESourceCredentialsProviderImpl *p g_return_val_if_fail (E_IS_SOURCE_CREDENTIALS_PROVIDER_IMPL (provider_impl), FALSE); klass = E_SOURCE_CREDENTIALS_PROVIDER_IMPL_GET_CLASS (provider_impl); + g_return_val_if_fail (klass != NULL, FALSE); g_return_val_if_fail (klass->can_prompt != NULL, FALSE); return klass->can_prompt (provider_impl); @@ -238,6 +241,7 @@ e_source_credentials_provider_impl_lookup_sync (ESourceCredentialsProviderImpl * g_return_val_if_fail (out_credentials != NULL, FALSE); klass = E_SOURCE_CREDENTIALS_PROVIDER_IMPL_GET_CLASS (provider_impl); + g_return_val_if_fail (klass != NULL, FALSE); g_return_val_if_fail (klass->lookup_sync != NULL, FALSE); return klass->lookup_sync (provider_impl, source, cancellable, out_credentials, error); @@ -277,6 +281,7 @@ e_source_credentials_provider_impl_store_sync (ESourceCredentialsProviderImpl *p g_return_val_if_fail (credentials != NULL, FALSE); klass = E_SOURCE_CREDENTIALS_PROVIDER_IMPL_GET_CLASS (provider_impl); + g_return_val_if_fail (klass != NULL, FALSE); g_return_val_if_fail (klass->store_sync != NULL, FALSE); return klass->store_sync (provider_impl, source, credentials, permanently, cancellable, error); @@ -311,6 +316,7 @@ e_source_credentials_provider_impl_delete_sync (ESourceCredentialsProviderImpl * g_return_val_if_fail (E_IS_SOURCE (source), FALSE); klass = E_SOURCE_CREDENTIALS_PROVIDER_IMPL_GET_CLASS (provider_impl); + g_return_val_if_fail (klass != NULL, FALSE); g_return_val_if_fail (klass->delete_sync != NULL, FALSE); return klass->delete_sync (provider_impl, source, cancellable, error); diff --git a/src/libedataserver/e-source-credentials-provider.c b/src/libedataserver/e-source-credentials-provider.c index 36764ba80..06b706d64 100644 --- a/src/libedataserver/e-source-credentials-provider.c +++ b/src/libedataserver/e-source-credentials-provider.c @@ -391,6 +391,7 @@ e_source_credentials_provider_ref_source (ESourceCredentialsProvider *provider, g_return_val_if_fail (uid != NULL, NULL); klass = E_SOURCE_CREDENTIALS_PROVIDER_GET_CLASS (provider); + g_return_val_if_fail (klass != NULL, NULL); g_return_val_if_fail (klass->ref_source != NULL, NULL); return klass->ref_source (provider, uid); diff --git a/src/libedataserver/e-source.c b/src/libedataserver/e-source.c index bb78db8f8..7177c8e33 100644 --- a/src/libedataserver/e-source.c +++ b/src/libedataserver/e-source.c @@ -3533,6 +3533,7 @@ e_source_remove_sync (ESource *source, g_return_val_if_fail (E_IS_SOURCE (source), FALSE); class = E_SOURCE_GET_CLASS (source); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->remove_sync != NULL, FALSE); return class->remove_sync (source, cancellable, error); @@ -3566,6 +3567,7 @@ e_source_remove (ESource *source, g_return_if_fail (E_IS_SOURCE (source)); class = E_SOURCE_GET_CLASS (source); + g_return_if_fail (class != NULL); g_return_if_fail (class->remove != NULL); class->remove (source, cancellable, callback, user_data); @@ -3595,6 +3597,7 @@ e_source_remove_finish (ESource *source, g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE); class = E_SOURCE_GET_CLASS (source); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->remove_finish != NULL, FALSE); return class->remove_finish (source, result, error); @@ -3626,6 +3629,7 @@ e_source_write_sync (ESource *source, g_return_val_if_fail (E_IS_SOURCE (source), FALSE); class = E_SOURCE_GET_CLASS (source); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->write_sync != NULL, FALSE); return class->write_sync (source, cancellable, error); @@ -3659,6 +3663,7 @@ e_source_write (ESource *source, g_return_if_fail (E_IS_SOURCE (source)); class = E_SOURCE_GET_CLASS (source); + g_return_if_fail (class != NULL); g_return_if_fail (class->write != NULL); class->write (source, cancellable, callback, user_data); @@ -3688,6 +3693,7 @@ e_source_write_finish (ESource *source, g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE); class = E_SOURCE_GET_CLASS (source); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->write_finish != NULL, FALSE); return class->write_finish (source, result, error); @@ -3727,6 +3733,7 @@ e_source_remote_create_sync (ESource *source, g_return_val_if_fail (E_IS_SOURCE (scratch_source), FALSE); class = E_SOURCE_GET_CLASS (source); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->remote_create_sync != NULL, FALSE); return class->remote_create_sync ( @@ -3769,6 +3776,7 @@ e_source_remote_create (ESource *source, g_return_if_fail (E_IS_SOURCE (scratch_source)); class = E_SOURCE_GET_CLASS (source); + g_return_if_fail (class != NULL); g_return_if_fail (class->remote_create != NULL); class->remote_create ( @@ -3799,6 +3807,7 @@ e_source_remote_create_finish (ESource *source, g_return_val_if_fail (E_IS_SOURCE (source), FALSE); class = E_SOURCE_GET_CLASS (source); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->remote_create_finish != NULL, FALSE); return class->remote_create_finish (source, result, error); @@ -3831,6 +3840,7 @@ e_source_remote_delete_sync (ESource *source, g_return_val_if_fail (E_IS_SOURCE (source), FALSE); class = E_SOURCE_GET_CLASS (source); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->remote_delete_sync != NULL, FALSE); return class->remote_delete_sync (source, cancellable, error); @@ -3865,6 +3875,7 @@ e_source_remote_delete (ESource *source, g_return_if_fail (E_IS_SOURCE (source)); class = E_SOURCE_GET_CLASS (source); + g_return_if_fail (class != NULL); g_return_if_fail (class->remote_delete != NULL); class->remote_delete (source, cancellable, callback, user_data); @@ -3893,6 +3904,7 @@ e_source_remote_delete_finish (ESource *source, g_return_val_if_fail (E_IS_SOURCE (source), FALSE); class = E_SOURCE_GET_CLASS (source); + g_return_val_if_fail (class != NULL, FALSE); g_return_val_if_fail (class->remote_delete_finish != NULL, FALSE); return class->remote_delete_finish (source, result, error); @@ -3930,8 +3942,8 @@ e_source_get_oauth2_access_token_sync (ESource *source, g_return_val_if_fail (E_IS_SOURCE (source), FALSE); class = E_SOURCE_GET_CLASS (source); - g_return_val_if_fail ( - class->get_oauth2_access_token_sync != NULL, FALSE); + g_return_val_if_fail (class != NULL, FALSE); + g_return_val_if_fail (class->get_oauth2_access_token_sync != NULL, FALSE); return class->get_oauth2_access_token_sync ( source, cancellable, out_access_token, out_expires_in, error); @@ -3965,6 +3977,7 @@ e_source_get_oauth2_access_token (ESource *source, g_return_if_fail (E_IS_SOURCE (source)); class = E_SOURCE_GET_CLASS (source); + g_return_if_fail (class != NULL); g_return_if_fail (class->get_oauth2_access_token != NULL); return class->get_oauth2_access_token ( @@ -4003,8 +4016,8 @@ e_source_get_oauth2_access_token_finish (ESource *source, g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE); class = E_SOURCE_GET_CLASS (source); - g_return_val_if_fail ( - class->get_oauth2_access_token_finish != NULL, FALSE); + g_return_val_if_fail (class != NULL, FALSE); + g_return_val_if_fail (class->get_oauth2_access_token_finish != NULL, FALSE); return class->get_oauth2_access_token_finish ( source, result, out_access_token, out_expires_in, error); @@ -4486,6 +4499,7 @@ e_source_invoke_credentials_required_sync (ESource *source, g_return_val_if_fail (E_IS_SOURCE (source), FALSE); klass = E_SOURCE_GET_CLASS (source); + g_return_val_if_fail (klass != NULL, FALSE); g_return_val_if_fail (klass->invoke_credentials_required_impl != NULL, FALSE); dbus_object = e_source_ref_dbus_object (source); @@ -4704,6 +4718,7 @@ e_source_invoke_authenticate_sync (ESource *source, g_return_val_if_fail (E_IS_SOURCE (source), FALSE); klass = E_SOURCE_GET_CLASS (source); + g_return_val_if_fail (klass != NULL, FALSE); g_return_val_if_fail (klass->invoke_authenticate_impl != NULL, FALSE); dbus_object = e_source_ref_dbus_object (source); @@ -5107,6 +5122,7 @@ e_source_unset_last_credentials_required_arguments_sync (ESource *source, g_return_val_if_fail (E_IS_SOURCE (source), FALSE); klass = E_SOURCE_GET_CLASS (source); + g_return_val_if_fail (klass != NULL, FALSE); g_return_val_if_fail (klass->unset_last_credentials_required_arguments_impl != NULL, FALSE); return klass->unset_last_credentials_required_arguments_impl (source, cancellable, error); diff --git a/src/libedataserver/e-webdav-session.c b/src/libedataserver/e-webdav-session.c index 06f3b0d45..fc9a646ff 100644 --- a/src/libedataserver/e-webdav-session.c +++ b/src/libedataserver/e-webdav-session.c @@ -4655,11 +4655,11 @@ e_webdav_session_principal_collection_set_cb (EWebDAVSession *webdav, length = xmlXPathNodeSetGetLength (xpath_obj->nodesetval); for (ii = 0; ii < length; ii++) { - gchar *href; + gchar *got_href; - href = e_xml_xpath_eval_as_string (xpath_ctx, "%s/D:principal-collection-set/D:href[%d]", xpath_prop_prefix, ii + 1); - if (href) - *out_principal_hrefs = g_slist_prepend (*out_principal_hrefs, href); + got_href = e_xml_xpath_eval_as_string (xpath_ctx, "%s/D:principal-collection-set/D:href[%d]", xpath_prop_prefix, ii + 1); + if (got_href) + *out_principal_hrefs = g_slist_prepend (*out_principal_hrefs, got_href); } xmlXPathFreeObject (xpath_obj); diff --git a/src/libedataserverui/e-credentials-prompter-impl.c b/src/libedataserverui/e-credentials-prompter-impl.c index c88d0a7c1..e339bfc8b 100644 --- a/src/libedataserverui/e-credentials-prompter-impl.c +++ b/src/libedataserverui/e-credentials-prompter-impl.c @@ -47,6 +47,7 @@ e_credentials_prompter_impl_constructed (GObject *object) prompter = E_CREDENTIALS_PROMPTER (e_extension_get_extensible (E_EXTENSION (prompter_impl))); klass = E_CREDENTIALS_PROMPTER_IMPL_GET_CLASS (object); + g_return_if_fail (klass != NULL); g_return_if_fail (klass->authentication_methods != NULL); for (ii = 0; klass->authentication_methods[ii]; ii++) { @@ -174,6 +175,7 @@ e_credentials_prompter_impl_prompt (ECredentialsPrompterImpl *prompter_impl, g_return_if_fail (credentials != NULL); klass = E_CREDENTIALS_PROMPTER_IMPL_GET_CLASS (prompter_impl); + g_return_if_fail (klass != NULL); g_return_if_fail (klass->process_prompt != NULL); klass->process_prompt (prompter_impl, prompt_id, auth_source, cred_source, error_text, credentials); @@ -224,6 +226,7 @@ e_credentials_prompter_impl_cancel_prompt (ECredentialsPrompterImpl *prompter_im g_return_if_fail (E_IS_CREDENTIALS_PROMPTER_IMPL (prompter_impl)); klass = E_CREDENTIALS_PROMPTER_IMPL_GET_CLASS (prompter_impl); + g_return_if_fail (klass != NULL); g_return_if_fail (klass->cancel_prompt != NULL); klass->cancel_prompt (prompter_impl, prompt_id); diff --git a/src/libedataserverui/e-credentials-prompter.c b/src/libedataserverui/e-credentials-prompter.c index 91f7cea8b..f8c94aaf6 100644 --- a/src/libedataserverui/e-credentials-prompter.c +++ b/src/libedataserverui/e-credentials-prompter.c @@ -548,12 +548,12 @@ e_credentials_prompter_prompt_finish_for_source (ECredentialsPrompter *prompter, } if (ppd->async_result) { - ECredentialsPrompter *prompter; + ECredentialsPrompter *ppd_prompter; - prompter = g_weak_ref_get (ppd->prompter); - if (prompter) { - e_credentials_prompter_complete_prompt_call (prompter, ppd->async_result, ppd->auth_source, credentials, NULL); - g_clear_object (&prompter); + ppd_prompter = g_weak_ref_get (ppd->prompter); + if (ppd_prompter) { + e_credentials_prompter_complete_prompt_call (ppd_prompter, ppd->async_result, ppd->auth_source, credentials, NULL); + g_clear_object (&ppd_prompter); /* To not be completed multiple times */ g_clear_object (&ppd->async_result); diff --git a/tests/libebook/client/test-book-client-photo-is-uri.c b/tests/libebook/client/test-book-client-photo-is-uri.c index 6babeb204..e698597ed 100644 --- a/tests/libebook/client/test-book-client-photo-is-uri.c +++ b/tests/libebook/client/test-book-client-photo-is-uri.c @@ -114,18 +114,19 @@ give_james_brown_micheal_jacksons_face (EBookClient *book) GError *error = NULL; if (!e_book_client_get_contact_sync (book, micheal_jackson_uid, &micheal, NULL, &error)) - g_error ("Unable to get micheal jackson's contact information: %s", error->message); + g_error ("Unable to get micheal jackson's contact information: %s", error->message); if (!e_book_client_get_contact_sync (book, james_brown_uid, &james, NULL, &error)) - g_error ("Unable to get james brown's contact information: %s", error->message); + g_error ("Unable to get james brown's contact information: %s", error->message); g_assert (micheal); g_assert (james); micheal_face = e_contact_get (micheal, E_CONTACT_PHOTO); + g_assert_nonnull (micheal_face); g_assert (micheal_face->type == E_CONTACT_PHOTO_TYPE_URI); - james_face = g_new (EContactPhoto, 1); + james_face = e_contact_photo_new (); james_face->type = E_CONTACT_PHOTO_TYPE_URI; james_face->data.uri = g_strdup (micheal_face->data.uri); @@ -133,6 +134,9 @@ give_james_brown_micheal_jacksons_face (EBookClient *book) g_print ("Giving james brown micheal jacksons face: %s\n", micheal_face->data.uri); + e_contact_photo_free (micheal_face); + e_contact_photo_free (james_face); + if (!e_book_client_modify_contact_sync (book, james, NULL, &error)) g_error ("Failed to modify contact with cross referenced photo: %s", error->message); } @@ -148,13 +152,13 @@ update_contact_inline (EBookClient *book, GError *error = NULL; if (!e_book_client_get_contact_sync (book, uid, &contact, NULL, &error)) - g_error ("Unable to get contact: %s", error->message); + g_error ("Unable to get contact: %s", error->message); g_assert (contact); data = g_base64_decode (photo_data, &length); - photo = g_new (EContactPhoto, 1); + photo = e_contact_photo_new (); photo->type = E_CONTACT_PHOTO_TYPE_INLINED; photo->data.inlined.mime_type = NULL; photo->data.inlined.data = data; @@ -163,8 +167,10 @@ update_contact_inline (EBookClient *book, /* set the photo */ e_contact_set (contact, E_CONTACT_PHOTO, photo); + e_contact_photo_free (photo); + if (!e_book_client_modify_contact_sync (book, contact, NULL, &error)) - g_error ("Failed to modify contact with inline photo data: %s", error->message); + g_error ("Failed to modify contact with inline photo data: %s", error->message); } /* This assertion is made a couple of times in the view-complete @@ -276,7 +282,7 @@ add_contact_inline (EBookClient *book) data = g_base64_decode (photo_data, &length); - photo = g_new (EContactPhoto, 1); + photo = e_contact_photo_new (); photo->type = E_CONTACT_PHOTO_TYPE_INLINED; photo->data.inlined.mime_type = NULL; photo->data.inlined.data = data; @@ -286,7 +292,9 @@ add_contact_inline (EBookClient *book) e_contact_set (contact, E_CONTACT_PHOTO, photo); e_contact_set (contact, E_CONTACT_FULL_NAME, "Micheal Jackson"); - if (!add_contact_verify (book, contact)) + e_contact_photo_free (photo); + + if (!add_contact_verify (book, contact)) g_error ("Failed to add contact"); micheal_jackson_uid = e_contact_get (contact, E_CONTACT_UID); @@ -300,7 +308,7 @@ add_contact_uri (EBookClient *book) contact = e_contact_new (); - photo = g_new (EContactPhoto, 1); + photo = e_contact_photo_new (); photo->type = E_CONTACT_PHOTO_TYPE_URI; photo->data.uri = g_strdup ("http://en.wikipedia.org/wiki/File:Jamesbrown4.jpg"); @@ -308,7 +316,9 @@ add_contact_uri (EBookClient *book) e_contact_set (contact, E_CONTACT_PHOTO, photo); e_contact_set (contact, E_CONTACT_FULL_NAME, "James Brown"); - if (!add_contact_verify (book, contact)) + e_contact_photo_free (photo); + + if (!add_contact_verify (book, contact)) g_error ("Failed to add contact"); james_brown_uid = e_contact_get (contact, E_CONTACT_UID); diff --git a/tests/libedata-book/test-book-meta-backend.c b/tests/libedata-book/test-book-meta-backend.c index df54ad910..afbe88fca 100644 --- a/tests/libedata-book/test-book-meta-backend.c +++ b/tests/libedata-book/test-book-meta-backend.c @@ -633,11 +633,16 @@ e_book_meta_backend_test_change_online (EBookMetaBackend *meta_backend, static void e_book_meta_backend_test_call_refresh (EBookMetaBackend *meta_backend) { + EBookBackendClass *backend_class; EFlag *flag; gulong handler_id; gboolean success; GError *error = NULL; + backend_class = E_BOOK_BACKEND_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->refresh_sync != NULL); + if (!e_backend_get_online (E_BACKEND (meta_backend))) return; @@ -646,7 +651,7 @@ e_book_meta_backend_test_call_refresh (EBookMetaBackend *meta_backend) handler_id = g_signal_connect_swapped (meta_backend, "refresh-completed", G_CALLBACK (e_flag_set), flag); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->refresh_sync (E_BOOK_BACKEND (meta_backend), NULL, &error); + success = backend_class->refresh_sync (E_BOOK_BACKEND (meta_backend), NULL, &error); g_assert_no_error (error); g_assert (success); @@ -830,6 +835,7 @@ static void test_create_contacts (EBookMetaBackend *meta_backend) { EBookMetaBackendTest *test_backend; + EBookBackendClass *backend_class; EBookCache *book_cache; GSList *offline_changes; gchar *vcards[2] = { NULL, NULL }, *tmp; @@ -839,6 +845,10 @@ test_create_contacts (EBookMetaBackend *meta_backend) g_assert_nonnull (meta_backend); + backend_class = E_BOOK_BACKEND_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->create_contacts_sync != NULL); + test_backend = E_BOOK_META_BACKEND_TEST (meta_backend); book_cache = e_book_meta_backend_ref_cache (meta_backend); g_assert_nonnull (book_cache); @@ -848,7 +858,7 @@ test_create_contacts (EBookMetaBackend *meta_backend) /* Try to add existing contact, it should fail */ vcards[0] = tcu_new_vcard_from_test_case ("custom-1"); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->create_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->create_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) vcards, &new_contacts, NULL, &error); g_assert_error (error, E_DATA_BOOK_ERROR, E_DATA_BOOK_STATUS_CONTACTID_ALREADY_EXISTS); g_assert (!success); @@ -861,7 +871,7 @@ test_create_contacts (EBookMetaBackend *meta_backend) /* Try to add new contact */ vcards[0] = tcu_new_vcard_from_test_case ("custom-7"); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->create_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->create_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) vcards, &new_contacts, NULL, &error); g_assert_no_error (error); g_assert (success); @@ -886,7 +896,7 @@ test_create_contacts (EBookMetaBackend *meta_backend) /* Try to add existing contact, it should fail */ vcards[0] = tcu_new_vcard_from_test_case ("custom-7"); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->create_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->create_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) vcards, &new_contacts, NULL, &error); g_assert_error (error, E_DATA_BOOK_ERROR, E_DATA_BOOK_STATUS_CONTACTID_ALREADY_EXISTS); g_assert (!success); @@ -899,7 +909,7 @@ test_create_contacts (EBookMetaBackend *meta_backend) /* Try to add new contact */ vcards[0] = tcu_new_vcard_from_test_case ("custom-8"); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->create_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->create_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) vcards, &new_contacts, NULL, &error); g_assert_no_error (error); g_assert (success); @@ -938,7 +948,7 @@ test_create_contacts (EBookMetaBackend *meta_backend) g_assert_nonnull (tmp); memcpy (tmp, "X-TEST:*007*", 12); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->create_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->create_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) vcards, &new_contacts, NULL, &error); g_assert_no_error (error); g_assert (success); @@ -996,6 +1006,7 @@ static void test_modify_contacts (EBookMetaBackend *meta_backend) { EBookMetaBackendTest *test_backend; + EBookBackendClass *backend_class; EBookCache *book_cache; EContact *contact; GSList *offline_changes; @@ -1007,6 +1018,10 @@ test_modify_contacts (EBookMetaBackend *meta_backend) g_assert_nonnull (meta_backend); + backend_class = E_BOOK_BACKEND_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->modify_contacts_sync != NULL); + test_backend = E_BOOK_META_BACKEND_TEST (meta_backend); book_cache = e_book_meta_backend_ref_cache (meta_backend); g_assert_nonnull (book_cache); @@ -1018,7 +1033,7 @@ test_modify_contacts (EBookMetaBackend *meta_backend) g_assert_nonnull (tmp); memcpy (tmp + 4, "unknown", 7); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->modify_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->modify_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) vcards, &new_contacts, NULL, &error); g_assert_error (error, E_DATA_BOOK_ERROR, E_DATA_BOOK_STATUS_CONTACT_NOT_FOUND); g_assert (!success); @@ -1029,7 +1044,7 @@ test_modify_contacts (EBookMetaBackend *meta_backend) /* Modify existing contact */ vcards[0] = ebmb_test_modify_case ("custom-1"); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->modify_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->modify_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) vcards, &new_contacts, NULL, &error); g_assert_no_error (error); g_assert (success); @@ -1070,7 +1085,7 @@ test_modify_contacts (EBookMetaBackend *meta_backend) /* Modify custom-2 */ vcards[0] = ebmb_test_modify_case ("custom-2"); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->modify_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->modify_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) vcards, &new_contacts, NULL, &error); g_assert_no_error (error); g_assert (success); @@ -1122,6 +1137,7 @@ static void test_remove_contacts (EBookMetaBackend *meta_backend) { EBookMetaBackendTest *test_backend; + EBookBackendClass *backend_class; EBookCache *book_cache; const gchar *uids[2] = { NULL, NULL }; GSList *offline_changes; @@ -1130,6 +1146,10 @@ test_remove_contacts (EBookMetaBackend *meta_backend) g_assert_nonnull (meta_backend); + backend_class = E_BOOK_BACKEND_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->remove_contacts_sync != NULL); + test_backend = E_BOOK_META_BACKEND_TEST (meta_backend); book_cache = e_book_meta_backend_ref_cache (meta_backend); g_assert_nonnull (book_cache); @@ -1137,7 +1157,7 @@ test_remove_contacts (EBookMetaBackend *meta_backend) /* Remove non-existing contact */ uids[0] = "unknown-contact"; - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->remove_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->remove_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) uids, NULL, &error); g_assert_error (error, E_DATA_BOOK_ERROR, E_DATA_BOOK_STATUS_CONTACT_NOT_FOUND); g_assert (!success); @@ -1146,7 +1166,7 @@ test_remove_contacts (EBookMetaBackend *meta_backend) /* Remove existing contact */ uids[0] = "custom-1"; - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->remove_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->remove_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) uids, NULL, &error); g_assert_no_error (error); g_assert (success); @@ -1166,7 +1186,7 @@ test_remove_contacts (EBookMetaBackend *meta_backend) /* Remove existing contact */ uids[0] = "custom-3"; - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->remove_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->remove_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) uids, NULL, &error); g_assert_no_error (error); g_assert (success); @@ -1208,12 +1228,17 @@ static void test_get_contact (EBookMetaBackend *meta_backend) { EBookMetaBackendTest *test_backend; + EBookBackendClass *backend_class; EBookCache *book_cache; EContact *contact; GError *error = NULL; g_assert_nonnull (meta_backend); + backend_class = E_BOOK_BACKEND_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->get_contact_sync != NULL); + test_backend = E_BOOK_META_BACKEND_TEST (meta_backend); book_cache = e_book_meta_backend_ref_cache (meta_backend); g_assert_nonnull (book_cache); @@ -1224,15 +1249,13 @@ test_get_contact (EBookMetaBackend *meta_backend) g_assert_no_error (error); /* Non-existing */ - contact = E_BOOK_BACKEND_GET_CLASS (meta_backend)->get_contact_sync (E_BOOK_BACKEND (meta_backend), - "unknown-contact", NULL, &error); + contact = backend_class->get_contact_sync (E_BOOK_BACKEND (meta_backend), "unknown-contact", NULL, &error); g_assert_error (error, E_DATA_BOOK_ERROR, E_DATA_BOOK_STATUS_CONTACT_NOT_FOUND); g_assert_null (contact); g_clear_error (&error); /* Existing */ - contact = E_BOOK_BACKEND_GET_CLASS (meta_backend)->get_contact_sync (E_BOOK_BACKEND (meta_backend), - "custom-1", NULL, &error); + contact = backend_class->get_contact_sync (E_BOOK_BACKEND (meta_backend), "custom-1", NULL, &error); g_assert_no_error (error); g_assert_nonnull (contact); g_assert_cmpstr (e_contact_get_const (contact, E_CONTACT_UID), ==, "custom-1"); @@ -1245,8 +1268,7 @@ test_get_contact (EBookMetaBackend *meta_backend) e_book_meta_backend_test_reset_counters (test_backend); - contact = E_BOOK_BACKEND_GET_CLASS (meta_backend)->get_contact_sync (E_BOOK_BACKEND (meta_backend), - "custom-5", NULL, &error); + contact = backend_class->get_contact_sync (E_BOOK_BACKEND (meta_backend), "custom-5", NULL, &error); g_assert_error (error, E_DATA_BOOK_ERROR, E_DATA_BOOK_STATUS_CONTACT_NOT_FOUND); g_assert_null (contact); g_clear_error (&error); @@ -1267,8 +1289,7 @@ test_get_contact (EBookMetaBackend *meta_backend) e_book_meta_backend_test_reset_counters (test_backend); g_assert_cmpint (test_backend->connect_count, ==, 0); - contact = E_BOOK_BACKEND_GET_CLASS (meta_backend)->get_contact_sync (E_BOOK_BACKEND (meta_backend), - "custom-5", NULL, &error); + contact = backend_class->get_contact_sync (E_BOOK_BACKEND (meta_backend), "custom-5", NULL, &error); g_assert_no_error (error); g_assert_nonnull (contact); g_assert_cmpint (test_backend->connect_count, ==, 0); @@ -1285,6 +1306,7 @@ test_get_contact (EBookMetaBackend *meta_backend) static void test_get_contact_list (EBookMetaBackend *meta_backend) { + EBookBackendClass *backend_class; GQueue contacts = G_QUEUE_INIT; EContact *contact; gboolean success; @@ -1292,13 +1314,17 @@ test_get_contact_list (EBookMetaBackend *meta_backend) g_assert_nonnull (meta_backend); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->get_contact_list_sync (E_BOOK_BACKEND (meta_backend), + backend_class = E_BOOK_BACKEND_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->get_contact_list_sync != NULL); + + success = backend_class->get_contact_list_sync (E_BOOK_BACKEND (meta_backend), "(is \"uid\" \"unknown-contact\")", &contacts, NULL, &error); g_assert_no_error (error); g_assert (success); g_assert_cmpint (g_queue_get_length (&contacts), ==, 0); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->get_contact_list_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->get_contact_list_sync (E_BOOK_BACKEND (meta_backend), "(is \"uid\" \"custom-3\")", &contacts, NULL, &error); g_assert_no_error (error); g_assert_cmpint (g_queue_get_length (&contacts), ==, 1); @@ -1312,19 +1338,24 @@ test_get_contact_list (EBookMetaBackend *meta_backend) static void test_get_contact_list_uids (EBookMetaBackend *meta_backend) { + EBookBackendClass *backend_class; GQueue uids = G_QUEUE_INIT; gboolean success; GError *error = NULL; g_assert_nonnull (meta_backend); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->get_contact_list_uids_sync (E_BOOK_BACKEND (meta_backend), + backend_class = E_BOOK_BACKEND_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->get_contact_list_uids_sync != NULL); + + success = backend_class->get_contact_list_uids_sync (E_BOOK_BACKEND (meta_backend), "(is \"uid\" \"unknown-contact\")", &uids, NULL, &error); g_assert_no_error (error); g_assert (success); g_assert_cmpint (g_queue_get_length (&uids), ==, 0); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->get_contact_list_uids_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->get_contact_list_uids_sync (E_BOOK_BACKEND (meta_backend), "(is \"uid\" \"custom-3\")", &uids, NULL, &error); g_assert_no_error (error); g_assert_cmpint (g_queue_get_length (&uids), ==, 1); @@ -1503,6 +1534,7 @@ test_refresh (EBookMetaBackend *meta_backend) static void test_cursor (EBookMetaBackend *meta_backend) { + EBookBackendClass *backend_class; EDataBookCursor *cursor; EContactField sort_fields[] = { E_CONTACT_FULL_NAME }; EBookCursorSortType sort_types[] = { E_BOOK_CURSOR_SORT_ASCENDING }; @@ -1515,8 +1547,16 @@ test_cursor (EBookMetaBackend *meta_backend) g_assert_nonnull (meta_backend); + backend_class = E_BOOK_BACKEND_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->create_cursor != NULL); + g_return_if_fail (backend_class->delete_cursor != NULL); + g_return_if_fail (backend_class->create_contacts_sync != NULL); + g_return_if_fail (backend_class->modify_contacts_sync != NULL); + g_return_if_fail (backend_class->remove_contacts_sync != NULL); + /* Create the cursor */ - cursor = E_BOOK_BACKEND_GET_CLASS (meta_backend)->create_cursor (E_BOOK_BACKEND (meta_backend), + cursor = backend_class->create_cursor (E_BOOK_BACKEND (meta_backend), sort_fields, sort_types, 1, &error); g_assert_no_error (error); g_assert_nonnull (cursor); @@ -1531,7 +1571,7 @@ test_cursor (EBookMetaBackend *meta_backend) /* Create */ vcards[0] = tcu_new_vcard_from_test_case ("custom-7"); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->create_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->create_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) vcards, &contacts, NULL, &error); g_assert_no_error (error); g_assert (success); @@ -1545,7 +1585,7 @@ test_cursor (EBookMetaBackend *meta_backend) /* Modify */ vcards[0] = ebmb_test_modify_case ("custom-2"); - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->modify_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->modify_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) vcards, &contacts, NULL, &error); g_assert_no_error (error); g_assert (success); @@ -1559,7 +1599,7 @@ test_cursor (EBookMetaBackend *meta_backend) /* Remove */ uids[0] = "custom-3"; - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->remove_contacts_sync (E_BOOK_BACKEND (meta_backend), + success = backend_class->remove_contacts_sync (E_BOOK_BACKEND (meta_backend), (const gchar * const *) uids, NULL, &error); g_assert_no_error (error); g_assert (success); @@ -1568,7 +1608,7 @@ test_cursor (EBookMetaBackend *meta_backend) g_assert_cmpint (e_data_book_cursor_get_position (cursor), ==, 2); /* Free the cursor */ - success = E_BOOK_BACKEND_GET_CLASS (meta_backend)->delete_cursor (E_BOOK_BACKEND (meta_backend), cursor, &error); + success = backend_class->delete_cursor (E_BOOK_BACKEND (meta_backend), cursor, &error); g_assert_no_error (error); g_assert (success); } diff --git a/tests/libedata-cal/test-cal-meta-backend.c b/tests/libedata-cal/test-cal-meta-backend.c index 51ea1a92c..6d30c9071 100644 --- a/tests/libedata-cal/test-cal-meta-backend.c +++ b/tests/libedata-cal/test-cal-meta-backend.c @@ -760,10 +760,15 @@ e_cal_meta_backend_test_change_online (ECalMetaBackend *meta_backend, static void e_cal_meta_backend_test_call_refresh (ECalMetaBackend *meta_backend) { + ECalBackendSyncClass *backend_class; EFlag *flag; gulong handler_id; GError *error = NULL; + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->refresh_sync != NULL); + if (!e_backend_get_online (E_BACKEND (meta_backend))) return; @@ -772,7 +777,7 @@ e_cal_meta_backend_test_call_refresh (ECalMetaBackend *meta_backend) handler_id = g_signal_connect_swapped (meta_backend, "refresh-completed", G_CALLBACK (e_flag_set), flag); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->refresh_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, &error); + backend_class->refresh_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, &error); g_assert_no_error (error); e_flag_wait (flag); @@ -1191,6 +1196,7 @@ test_empty_cache (TCUFixture *fixture, "TZOFFSETTO:-0400\r\n" "END:DAYLIGHT\r\n" "END:VTIMEZONE\r\n"; + ECalBackendSyncClass *backend_class; ECalMetaBackend *meta_backend; GList *zones; gboolean success; @@ -1199,9 +1205,12 @@ test_empty_cache (TCUFixture *fixture, meta_backend = e_cal_meta_backend_test_new (fixture->cal_cache); g_assert_nonnull (meta_backend); + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->add_timezone_sync != NULL); + /* Add timezone to the cache */ - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->add_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, in_tzobj, &error); + backend_class->add_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, in_tzobj, &error); g_assert_no_error (error); zones = NULL; @@ -1239,6 +1248,7 @@ test_empty_cache (TCUFixture *fixture, static void test_send_objects (ECalMetaBackend *meta_backend) { + ECalBackendSyncClass *backend_class; GSList *users = NULL; const gchar *calobj = "fake-iCalendar-object"; gchar *modified_calobj = NULL; @@ -1246,7 +1256,11 @@ test_send_objects (ECalMetaBackend *meta_backend) g_assert_nonnull (meta_backend); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->send_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->send_objects_sync != NULL); + + backend_class->send_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &users, &modified_calobj, &error); g_assert_no_error (error); @@ -1259,13 +1273,18 @@ test_send_objects (ECalMetaBackend *meta_backend) static void test_get_attachment_uris (ECalMetaBackend *meta_backend) { + ECalBackendSyncClass *backend_class; GSList *uris = NULL; GError *error = NULL; g_assert_nonnull (meta_backend); + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->get_attachment_uris_sync != NULL); + /* non-existent event */ - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_attachment_uris_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_attachment_uris_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "unknown-event", NULL, &uris, &error); g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound); @@ -1274,14 +1293,14 @@ test_get_attachment_uris (ECalMetaBackend *meta_backend) g_clear_error (&error); /* existent event, but with no attachments */ - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_attachment_uris_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_attachment_uris_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "event-1", NULL, &uris, &error); g_assert_no_error (error); g_assert_null (uris); /* event with attachments */ - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_attachment_uris_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_attachment_uris_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "event-7", NULL, &uris, &error); g_assert_no_error (error); @@ -1295,12 +1314,17 @@ test_get_attachment_uris (ECalMetaBackend *meta_backend) static void test_discard_alarm (ECalMetaBackend *meta_backend) { + ECalBackendSyncClass *backend_class; GError *error = NULL; g_assert_nonnull (meta_backend); + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->discard_alarm_sync != NULL); + /* Not implemented */ - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->discard_alarm_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->discard_alarm_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "unknown-event", NULL, NULL, &error); g_assert_error (error, E_CLIENT_ERROR, E_CLIENT_ERROR_NOT_SUPPORTED); @@ -1333,6 +1357,7 @@ test_timezones (ECalMetaBackend *meta_backend) "TZOFFSETTO:-0400\r\n" "END:DAYLIGHT\r\n" "END:VTIMEZONE\r\n"; + ECalBackendSyncClass *backend_class; ECalCache *cal_cache; icalcomponent *vcalendar; gchar *tzobj = NULL; @@ -1342,26 +1367,31 @@ test_timezones (ECalMetaBackend *meta_backend) g_assert_nonnull (meta_backend); + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->add_timezone_sync != NULL); + g_return_if_fail (backend_class->get_timezone_sync != NULL); + /* Verify neither TZID, not LOCATION is in the timezone cache */ - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, TZID, &tzobj, &error); g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound); g_assert_null (tzobj); g_clear_error (&error); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, TZLOC, &tzobj, &error); g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound); g_assert_null (tzobj); g_clear_error (&error); /* Add it to the cache */ - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->add_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->add_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, in_tzobj, &error); g_assert_no_error (error); /* Read it back */ - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, TZID, &tzobj, &error); g_assert_no_error (error); g_assert_cmpstr (tzobj, ==, in_tzobj); @@ -1369,14 +1399,14 @@ test_timezones (ECalMetaBackend *meta_backend) tzobj = NULL; /* As a non-built-in timezone it cannot be read with location, only with TZID */ - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, TZLOC, &tzobj, &error); g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound); g_assert_null (tzobj); g_clear_error (&error); /* Try also internal timezone, which will be renamed and added to the cache too */ - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "America/New_York", &tzobj, &error); g_assert_no_error (error); g_assert_nonnull (tzobj); @@ -1469,7 +1499,7 @@ test_timezones (ECalMetaBackend *meta_backend) g_assert (success); g_assert_cmpint (g_list_length (zones), ==, 0); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->add_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->add_timezone_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, in_tzobj, &error); g_assert_no_error (error); @@ -1512,19 +1542,24 @@ test_get_free_busy (ECalMetaBackend *meta_backend) "FREEBUSY;FBTYPE=BUSY;X-SUMMARY=After-party clean up;X-LOCATION=All around:\r\n" " 20170102T100000Z/20170102T180000Z\r\n" "END:VFREEBUSY\r\n"; + ECalBackendSyncClass *backend_class; GSList *users, *objects = NULL; time_t start, end; GError *error = NULL; g_assert_nonnull (meta_backend); + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->get_free_busy_sync != NULL); + users = g_slist_prepend (NULL, (gpointer) "user@no.where"); users = g_slist_prepend (users, (gpointer) "unknown@no.where"); start = icaltime_as_timet (icaltime_from_string ("20170102T080000Z")); end = icaltime_as_timet (icaltime_from_string ("20170102T200000Z")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_free_busy_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_free_busy_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, users, start, end, &objects, &error); g_assert_no_error (error); @@ -1539,6 +1574,7 @@ static void test_create_objects (ECalMetaBackend *meta_backend) { ECalMetaBackendTest *test_backend; + ECalBackendSyncClass *backend_class; ECalCache *cal_cache; GSList *objects, *uids = NULL, *new_components = NULL, *offline_changes; gchar *calobj, *tmp; @@ -1546,6 +1582,10 @@ test_create_objects (ECalMetaBackend *meta_backend) g_assert_nonnull (meta_backend); + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->create_objects_sync != NULL); + test_backend = E_CAL_META_BACKEND_TEST (meta_backend); cal_cache = e_cal_meta_backend_ref_cache (meta_backend); g_assert_nonnull (cal_cache); @@ -1567,7 +1607,7 @@ test_create_objects (ECalMetaBackend *meta_backend) /* Try to add existing event, it should fail */ objects = g_slist_prepend (NULL, tcu_new_icalstring_from_test_case ("event-1")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, objects, &uids, &new_components, &error); g_assert_error (error, E_DATA_CAL_ERROR, ObjectIdAlreadyExists); g_assert_null (uids); @@ -1580,7 +1620,7 @@ test_create_objects (ECalMetaBackend *meta_backend) /* Try to add new event */ objects = g_slist_prepend (NULL, tcu_new_icalstring_from_test_case ("event-7")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, objects, &uids, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (uids), ==, 1); @@ -1607,7 +1647,7 @@ test_create_objects (ECalMetaBackend *meta_backend) /* Try to add existing event, it should fail */ objects = g_slist_prepend (NULL, tcu_new_icalstring_from_test_case ("event-7")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, objects, &uids, &new_components, &error); g_assert_error (error, E_DATA_CAL_ERROR, ObjectIdAlreadyExists); g_assert_null (uids); @@ -1620,7 +1660,7 @@ test_create_objects (ECalMetaBackend *meta_backend) /* Try to add new event */ objects = g_slist_prepend (NULL, tcu_new_icalstring_from_test_case ("event-8")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, objects, &uids, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (uids), ==, 1); @@ -1663,7 +1703,7 @@ test_create_objects (ECalMetaBackend *meta_backend) objects = g_slist_prepend (NULL, calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->create_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, objects, &uids, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (uids), ==, 1); @@ -1722,6 +1762,7 @@ static void test_modify_objects (ECalMetaBackend *meta_backend) { ECalMetaBackendTest *test_backend; + ECalBackendSyncClass *backend_class; ECalCache *cal_cache; GSList *objects, *old_components = NULL, *new_components = NULL, *offline_changes; gchar *calobj, *tmp; @@ -1731,6 +1772,10 @@ test_modify_objects (ECalMetaBackend *meta_backend) g_assert_nonnull (meta_backend); + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->modify_objects_sync != NULL); + test_backend = E_CAL_META_BACKEND_TEST (meta_backend); cal_cache = e_cal_meta_backend_ref_cache (meta_backend); g_assert_nonnull (cal_cache); @@ -1744,7 +1789,7 @@ test_modify_objects (ECalMetaBackend *meta_backend) objects = g_slist_prepend (NULL, calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, objects, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error); g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound); g_assert_null (old_components); @@ -1755,7 +1800,7 @@ test_modify_objects (ECalMetaBackend *meta_backend) /* Modify existing event */ objects = g_slist_prepend (NULL, ecmb_test_modify_case ("event-1", NULL)); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, objects, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -1787,7 +1832,7 @@ test_modify_objects (ECalMetaBackend *meta_backend) /* Modify event-2 */ objects = g_slist_prepend (NULL, ecmb_test_modify_case ("event-2", NULL)); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, objects, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -1826,7 +1871,7 @@ test_modify_objects (ECalMetaBackend *meta_backend) /* Modify non-recurring with THIS */ objects = g_slist_prepend (NULL, ecmb_test_modify_case ("event-4", NULL)); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, objects, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -1853,7 +1898,7 @@ test_modify_objects (ECalMetaBackend *meta_backend) /* Modify non-detached recurring instance with ONLY_THIS */ objects = g_slist_prepend (NULL, ecmb_test_modify_case ("event-6", "20170227T134900")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, objects, E_CAL_OBJ_MOD_ONLY_THIS, &old_components, &new_components, &error); g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound); g_assert_null (old_components); @@ -1866,7 +1911,7 @@ test_modify_objects (ECalMetaBackend *meta_backend) /* Modify detached recurring instance with ONLY_THIS */ objects = g_slist_prepend (NULL, ecmb_test_modify_case ("event-6-a", NULL)); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->modify_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, objects, E_CAL_OBJ_MOD_ONLY_THIS, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -1899,12 +1944,17 @@ static void test_remove_objects (ECalMetaBackend *meta_backend) { ECalMetaBackendTest *test_backend; + ECalBackendSyncClass *backend_class; ECalCache *cal_cache; GSList *ids, *old_components = NULL, *new_components = NULL, *offline_changes; GError *error = NULL; g_assert_nonnull (meta_backend); + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->remove_objects_sync != NULL); + test_backend = E_CAL_META_BACKEND_TEST (meta_backend); cal_cache = e_cal_meta_backend_ref_cache (meta_backend); g_assert_nonnull (cal_cache); @@ -1912,7 +1962,7 @@ test_remove_objects (ECalMetaBackend *meta_backend) /* Remove non-existing event */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("unknown-event", NULL)); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error); g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound); g_assert_null (old_components); @@ -1923,7 +1973,7 @@ test_remove_objects (ECalMetaBackend *meta_backend) /* Remove existing event */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("event-1", NULL)); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -1950,7 +2000,7 @@ test_remove_objects (ECalMetaBackend *meta_backend) ids = g_slist_prepend (NULL, e_cal_component_id_new ("event-6", "20170225T134900")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -1981,7 +2031,7 @@ test_remove_objects (ECalMetaBackend *meta_backend) ids = g_slist_prepend (NULL, e_cal_component_id_new ("event-6", "20170227T134900")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_ONLY_THIS, &old_components, &new_components, &error); g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound); g_assert_null (old_components); @@ -1992,7 +2042,7 @@ test_remove_objects (ECalMetaBackend *meta_backend) /* Remove non-existing detached instance with THIS - changes master object */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("event-6", "20170227T134900")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2024,7 +2074,7 @@ test_remove_objects (ECalMetaBackend *meta_backend) /* Remove existing event */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("event-3", NULL)); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_ONLY_THIS, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2074,6 +2124,7 @@ static void test_receive_objects (ECalMetaBackend *meta_backend) { ECalMetaBackendTest *test_backend; + ECalBackendSyncClass *backend_class; ECalCache *cal_cache; gchar *calobj; icalcomponent *icalcomp; @@ -2082,6 +2133,12 @@ test_receive_objects (ECalMetaBackend *meta_backend) g_assert_nonnull (meta_backend); + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->get_object_sync != NULL); + g_return_if_fail (backend_class->receive_objects_sync != NULL); + g_return_if_fail (backend_class->remove_objects_sync != NULL); + test_backend = E_CAL_META_BACKEND_TEST (meta_backend); cal_cache = e_cal_meta_backend_ref_cache (meta_backend); g_assert_nonnull (cal_cache); @@ -2110,7 +2167,7 @@ test_receive_objects (ECalMetaBackend *meta_backend) NULL); calobj = NULL; - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "invite", NULL, &calobj, &error); g_assert_no_error (error); g_assert_nonnull (calobj); @@ -2121,8 +2178,7 @@ test_receive_objects (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-2"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2131,7 +2187,7 @@ test_receive_objects (ECalMetaBackend *meta_backend) g_assert_cmpint (test_backend->remove_count, ==, 0); calobj = NULL; - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "invite", NULL, &calobj, &error); g_assert_no_error (error); g_assert_nonnull (calobj); @@ -2144,7 +2200,7 @@ test_receive_objects (ECalMetaBackend *meta_backend) /* Remove the 'invite' component, to test also user side */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite", NULL)); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2173,8 +2229,7 @@ test_receive_objects (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-1"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2192,7 +2247,7 @@ test_receive_objects (ECalMetaBackend *meta_backend) ecmb_test_cache_and_server_equal (cal_cache, test_backend->vcalendar, E_CACHE_INCLUDE_DELETED); calobj = NULL; - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "invite", NULL, &calobj, &error); g_assert_no_error (error); g_assert_nonnull (calobj); @@ -2204,8 +2259,7 @@ test_receive_objects (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-3"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2223,7 +2277,7 @@ test_receive_objects (ECalMetaBackend *meta_backend) ecmb_test_cache_and_server_equal (cal_cache, test_backend->vcalendar, E_CACHE_INCLUDE_DELETED); calobj = NULL; - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "invite", NULL, &calobj, &error); g_assert_no_error (error); g_assert_nonnull (calobj); @@ -2235,8 +2289,7 @@ test_receive_objects (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-4"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2260,6 +2313,7 @@ static void test_receive_and_remove (ECalMetaBackend *meta_backend) { ECalMetaBackendTest *test_backend; + ECalBackendSyncClass *backend_class; ECalCache *cal_cache; gchar *calobj; GSList *old_components = NULL, *new_components = NULL, *ids; @@ -2267,6 +2321,12 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) g_assert_nonnull (meta_backend); + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->get_object_sync != NULL); + g_return_if_fail (backend_class->remove_objects_sync != NULL); + g_return_if_fail (backend_class->receive_objects_sync != NULL); + test_backend = E_CAL_META_BACKEND_TEST (meta_backend); cal_cache = e_cal_meta_backend_ref_cache (meta_backend); g_assert_nonnull (cal_cache); @@ -2275,8 +2335,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-5"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2294,7 +2353,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) ecmb_test_cache_and_server_equal (cal_cache, test_backend->vcalendar, E_CACHE_INCLUDE_DELETED); calobj = NULL; - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "invite-detached", NULL, &calobj, &error); g_assert_no_error (error); g_assert_nonnull (calobj); @@ -2305,7 +2364,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) /* Delete master component, with no detached instances now */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", NULL)); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2334,7 +2393,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-5"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2356,8 +2415,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-6"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2377,7 +2435,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) ecmb_test_cache_and_server_equal (cal_cache, test_backend->vcalendar, E_CACHE_INCLUDE_DELETED); calobj = NULL; - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "invite-detached", NULL, &calobj, &error); g_assert_no_error (error); g_assert_nonnull (calobj); @@ -2388,7 +2446,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) /* Remove only the detached instance */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180502T000000Z")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2420,7 +2478,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) ecmb_test_cache_and_server_equal (cal_cache, test_backend->vcalendar, E_CACHE_INCLUDE_DELETED); calobj = NULL; - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "invite-detached", NULL, &calobj, &error); g_assert_no_error (error); g_assert_nonnull (calobj); @@ -2432,8 +2490,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-6"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2451,7 +2508,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) ecmb_test_cache_and_server_equal (cal_cache, test_backend->vcalendar, E_CACHE_INCLUDE_DELETED); calobj = NULL; - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "invite-detached", NULL, &calobj, &error); g_assert_no_error (error); g_assert_nonnull (calobj); @@ -2462,7 +2519,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) /* Remove the master object, which should delete both */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", NULL)); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2488,13 +2545,13 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) ecmb_test_cache_and_server_equal (cal_cache, test_backend->vcalendar, E_CACHE_INCLUDE_DELETED); calobj = NULL; - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "invite-detached", NULL, &calobj, &error); g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound); g_assert_null (calobj); g_clear_error (&error); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "invite-detached", "20180502T000000Z", &calobj, &error); g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound); g_assert_null (calobj); @@ -2504,8 +2561,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-6"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2523,7 +2579,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) /* Remove the master object with mode THIS, which is not in the cache, but should remove all anyway */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", NULL)); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2551,15 +2607,14 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-6"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); /* Remove the master object with mode ALL, which is not in the cache, but should remove all */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", NULL)); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2590,8 +2645,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-6"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2609,7 +2663,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) /* Remove the detached instance with mode THIS */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180502T000000Z")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2638,8 +2692,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-6"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2657,7 +2710,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) /* Remove the detached instance with mode ALL */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180502T000000Z")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2686,8 +2739,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-7"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2707,7 +2759,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) /* Remove the detached instance with mode THIS */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180502T000000Z")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2742,8 +2794,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-6"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2751,7 +2802,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180502T000000Z")); ids = g_slist_prepend (ids, e_cal_component_id_new ("invite-detached", "20180509T000000Z")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 2); @@ -2783,8 +2834,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-7"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2804,7 +2854,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) /* Remove the second detached instance with mode ALL */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180509T000000Z")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2835,8 +2885,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-7"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2865,8 +2914,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) calobj = tcu_new_icalstring_from_test_case ("invite-5"); g_assert_nonnull (calobj); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), - NULL, NULL, calobj, &error); + backend_class->receive_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, calobj, &error); g_assert_no_error (error); g_free (calobj); @@ -2890,7 +2938,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) /* Remove the second detached instance with mode THIS */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180509T000000Z")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_THIS, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2926,7 +2974,7 @@ test_receive_and_remove (ECalMetaBackend *meta_backend) /* Remove the first detached instance with mode ALL, which will drop whole series */ ids = g_slist_prepend (NULL, e_cal_component_id_new ("invite-detached", "20180502T000000Z")); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->remove_objects_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, ids, E_CAL_OBJ_MOD_ALL, &old_components, &new_components, &error); g_assert_no_error (error); g_assert_cmpint (g_slist_length (old_components), ==, 1); @@ -2962,6 +3010,7 @@ static void test_get_object (ECalMetaBackend *meta_backend) { ECalMetaBackendTest *test_backend; + ECalBackendSyncClass *backend_class; ECalCache *cal_cache; icalcomponent *icalcomp; gchar *calobj = NULL; @@ -2969,6 +3018,10 @@ test_get_object (ECalMetaBackend *meta_backend) g_assert_nonnull (meta_backend); + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->get_object_sync != NULL); + test_backend = E_CAL_META_BACKEND_TEST (meta_backend); cal_cache = e_cal_meta_backend_ref_cache (meta_backend); g_assert_nonnull (cal_cache); @@ -2981,7 +3034,7 @@ test_get_object (ECalMetaBackend *meta_backend) g_assert_no_error (error); /* Master object with its detached instances */ - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "event-6", NULL, &calobj, &error); g_assert_no_error (error); @@ -2999,7 +3052,7 @@ test_get_object (ECalMetaBackend *meta_backend) calobj = NULL; /* Only the detached instance */ - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "event-6", "20170225T134900", &calobj, &error); g_assert_no_error (error); @@ -3022,7 +3075,7 @@ test_get_object (ECalMetaBackend *meta_backend) e_cal_meta_backend_test_reset_counters (test_backend); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "event-7", NULL, &calobj, &error); g_assert_error (error, E_DATA_CAL_ERROR, ObjectNotFound); g_assert_null (calobj); @@ -3044,7 +3097,7 @@ test_get_object (ECalMetaBackend *meta_backend) e_cal_meta_backend_test_reset_counters (test_backend); g_assert_cmpint (test_backend->connect_count, ==, 0); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "event-7", NULL, &calobj, &error); g_assert_no_error (error); g_assert_nonnull (calobj); @@ -3062,17 +3115,22 @@ test_get_object (ECalMetaBackend *meta_backend) static void test_get_object_list (ECalMetaBackend *meta_backend) { + ECalBackendSyncClass *backend_class; GSList *calobjs = NULL; GError *error = NULL; g_assert_nonnull (meta_backend); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_list_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class = E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend); + g_return_if_fail (backend_class != NULL); + g_return_if_fail (backend_class->get_object_list_sync != NULL); + + backend_class->get_object_list_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "(uid? \"unknown-event\")", &calobjs, &error); g_assert_no_error (error); g_assert_null (calobjs); - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_list_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_list_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "(uid? \"event-3\")", &calobjs, &error); g_assert_no_error (error); g_assert_nonnull (calobjs); @@ -3081,7 +3139,7 @@ test_get_object_list (ECalMetaBackend *meta_backend) g_slist_free_full (calobjs, g_free); calobjs = NULL; - E_CAL_BACKEND_SYNC_GET_CLASS (meta_backend)->get_object_list_sync (E_CAL_BACKEND_SYNC (meta_backend), + backend_class->get_object_list_sync (E_CAL_BACKEND_SYNC (meta_backend), NULL, NULL, "(uid? \"event-6\")", &calobjs, &error); g_assert_no_error (error); g_assert_nonnull (calobjs); |
