[evolution-data-server/gnome-3-28] Address some of the compiler and static analyzers warnings
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/gnome-3-28] Address some of the compiler and static analyzers warnings
- Date: Thu, 17 May 2018 13:43:36 +0000 (UTC)
commit d3900f99b9479ece5c12459c9bd163793726911c
Author: Milan Crha <mcrha redhat com>
Date: Thu May 17 15:45:03 2018 +0200
Address some of the compiler and static analyzers warnings
iconv-detect.c | 8 +-
.../backends/file/e-book-backend-file.c | 7 +-
.../libebook-contacts/e-address-western.c | 2 +
src/addressbook/libebook-contacts/e-name-western.c | 2 +-
src/addressbook/libebook/e-book-client.c | 5 +-
src/addressbook/libebook/e-destination.c | 6 +-
src/addressbook/libedata-book/e-book-backend.c | 115 +++++++---
src/addressbook/libedata-book/e-book-cache.c | 9 +-
src/addressbook/libedata-book/e-book-sqlite.c | 8 +
src/addressbook/libedata-book/e-data-book-cursor.c | 72 +++---
src/calendar/libecal/e-cal-recur.c | 7 +
src/calendar/libedata-cal/e-cal-backend-store.c | 16 ++
src/calendar/libedata-cal/e-cal-backend-sync.c | 28 +++
src/calendar/libedata-cal/e-cal-backend.c | 41 +++-
src/calendar/libedata-cal/e-cal-cache.c | 8 +-
src/camel/camel-address.c | 7 +
src/camel/camel-certdb.c | 4 +-
src/camel/camel-cipher-context.c | 9 +-
src/camel/camel-data-wrapper.c | 13 +-
src/camel/camel-folder-summary.c | 249 ++++++++++++--------
src/camel/camel-folder.c | 42 ++++-
src/camel/camel-index.c | 14 +
src/camel/camel-medium.c | 8 +
src/camel/camel-mime-filter.c | 3 +
src/camel/camel-mime-message.c | 4 +-
src/camel/camel-mime-parser.c | 25 ++-
src/camel/camel-mime-part.c | 17 +-
src/camel/camel-multipart.c | 6 +
src/camel/camel-object.c | 2 +
src/camel/camel-offline-folder.c | 1 +
src/camel/camel-provider.c | 12 +-
src/camel/camel-sasl.c | 10 +-
src/camel/camel-service.c | 8 +-
src/camel/camel-session.c | 22 +-
src/camel/camel-settings.c | 6 +
src/camel/camel-sexp.c | 36 ++-
src/camel/camel-store-summary.c | 7 +
src/camel/camel-store.c | 34 +++-
src/camel/camel-stream.c | 5 +
src/camel/camel-vee-folder.c | 42 +++-
src/camel/camel-vee-store.c | 18 +-
src/camel/providers/imapx/camel-imapx-search.c | 7 -
src/camel/providers/imapx/camel-imapx-server.c | 98 ++++++--
src/camel/providers/local/camel-local-private.c | 17 +-
src/camel/providers/local/camel-local-store.c | 2 +
src/camel/providers/local/camel-maildir-folder.c | 8 +-
src/camel/providers/local/camel-maildir-store.c | 1 +
src/camel/providers/local/camel-mbox-summary.c | 6 +-
src/camel/providers/pop3/camel-pop3-folder.c | 4 +-
src/camel/providers/pop3/camel-pop3-store.c | 4 +-
src/camel/tests/lib/messages.c | 4 +-
src/libebackend/e-backend-factory.c | 4 +
src/libebackend/e-backend.c | 3 +
src/libebackend/e-cache.c | 2 +-
src/libebackend/e-collection-backend-factory.c | 6 +-
src/libebackend/e-collection-backend.c | 9 +
src/libebackend/e-data-factory.c | 22 ++-
src/libebackend/e-dbus-server.c | 8 +-
src/libebackend/e-subprocess-factory.c | 14 +-
src/libebackend/e-user-prompter-server-extension.c | 5 +-
src/libebackend/e-user-prompter-server-extension.h | 2 +-
src/libebackend/e-user-prompter-server.c | 1 +
src/libebackend/e-user-prompter-server.h | 2 +-
src/libebackend/e-user-prompter.h | 1 -
src/libedataserver/e-collator.c | 1 +
src/libedataserver/e-extension.c | 2 +
src/libedataserver/e-proxy.c | 7 +-
src/libedataserver/e-sexp.c | 27 ++-
.../e-source-credentials-provider-impl.c | 6 +
src/libedataserver/e-source-credentials-provider.c | 1 +
src/libedataserver/e-source.c | 24 ++-
src/libedataserver/e-webdav-session.c | 8 +-
src/libedataserverui/e-credentials-prompter-impl.c | 3 +
src/libedataserverui/e-credentials-prompter.c | 10 +-
.../client/test-book-client-photo-is-uri.c | 30 ++-
tests/libedata-book/test-book-meta-backend.c | 98 ++++++---
tests/libedata-cal/test-cal-meta-backend.c | 250 ++++++++++++--------
77 files changed, 1162 insertions(+), 473 deletions(-)
---
diff --git a/iconv-detect.c b/iconv-detect.c
index e44ad94..8cb4673 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 a25e5c1..18efecb 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 0618fcb..3dc5d72 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 7c91d59..bf6decc 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 4ac3429..2c0557c 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 bbe4aef..9381599 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 5ab1e91..44143ba 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 6899cd7..fbf931a 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 f4f2fdc..169b002 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 b1c367a..2166400 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 35892df..243bffa 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 3f13a18..dd14d0e 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 9b01bd9..0ca680e 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 3756665..e5819b6 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 6c2553a..510bbb3 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 8aec82d..9aadff7 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 695fb94..4e240f1 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 2b185bc..dcdc3ee 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 7882875..68fcee3 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 dfca052..ace078a 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 ee67b63..c67b2be 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 c95964e..98cc3cf 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 2165881..f35491a 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 1ea7770..2b4918c 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 bca0f93..0d0477a 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 a241606..8f8ca29 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 76cbe2a..d46c3fe 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 3329ada..e349bbd 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 ea7a0b8..6f9003d 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 3aa5cd8..5e631d4 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 ba7a87d..602b378 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 6c0dd9b..12b4be1 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 45d6e9e..aff79a5 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 74634a9..4431d7a 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 fdeb8e7..db10a4f 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 a0afff0..8ad03ed 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 5c21950..b78e068 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 8b3b97d..a9bcb9f 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 2243dc7..a6c6d0c 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 b735c25..4b14870 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 122f569..1d786db 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 29245d9..3f2100d 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 f413d67..6339382 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 f19c784..71a71d7 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 8323db4..88e7abb 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 9e6b259..89007a0 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 5861d57..9611e01 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 b0d94cd..a33f8a0 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 9998625..0931a0d 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 77d9740..3f56542 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 ea7b0a0..211e7aa 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 e9b8493..87936b3 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 31c1be9..ed40cc0 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 e36808d..e683da1 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 122f065..5c44285 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 4fa459e..1001db9 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 0da6628..dfcb933 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 2fa2697..ba77f00 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 514d490..9654fc8 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 e0f85c8..8c1e4fc 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 e60d34e..5131dd6 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 7a22034..1a72a11 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 9088e8c..2a78e44 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 43d5627..ffd6e4a 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 334b8f1..718eac5 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 3133c9c..1242355 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 a51c465..883379a 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 9230452..f49c078 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 6c4498b..8e3b438 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 36764ba..06b706d 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 bb78db8..7177c8e 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 06f3b0d..fc9a646 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 c88d0a7..e339bfc 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 91f7cea..f8c94aa 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 6babeb2..e698597 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 df54ad9..afbe88f 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 51ea1a9..6d30c90 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);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]