camel_store_summary_touch ((CamelStoreSummary *)((CamelIMAPXStore *) parent_store)->summary);
}
- camel_store_summary_info_free ((CamelStoreSummary *)((CamelIMAPXStore *) parent_store)->summary, si);
+ camel_store_summary_info_unref ((CamelStoreSummary *)((CamelIMAPXStore *) parent_store)->summary, si);
}
}
*
* Returns: The summary item, or NULL if the @full_name name
* is not available.
- * It must be freed using camel_store_summary_info_free().
+ * It must be freed using camel_store_summary_info_unref().
**/
CamelIMAPXStoreInfo *
camel_imapx_store_summary_full_name (CamelIMAPXStoreSummary *s,
if (strcmp (info->full_name, full_name) == 0 ||
(is_inbox && g_ascii_strcasecmp (info->full_name, full_name) == 0))
return info;
- camel_store_summary_info_free ((CamelStoreSummary *) s, (CamelStoreInfo *) info);
+ camel_store_summary_info_unref ((CamelStoreSummary *) s, (CamelStoreInfo *) info);
}
}
/* path is already present, use the raw version we have */
if (si && strlen (subpath) == strlen (path)) {
f = g_strdup (camel_imapx_store_info_full_name (s, si));
- camel_store_summary_info_free ((CamelStoreSummary *) s, si);
+ camel_store_summary_info_unref ((CamelStoreSummary *) s, si);
return f;
}
if (si) {
full = g_strdup_printf ("%s%s", camel_imapx_store_info_full_name (s, si), f);
g_free (f);
- camel_store_summary_info_free ((CamelStoreSummary *) s, si);
+ camel_store_summary_info_unref ((CamelStoreSummary *) s, si);
f = full;
} else if (ns) {
full = g_strdup_printf ("%s%s", ns->full_name, f);
info = camel_imapx_store_summary_full_name (s, full_name);
if (info) {
- camel_store_summary_info_free ((CamelStoreSummary *) s, (CamelStoreInfo *) info);
+ camel_store_summary_info_unref ((CamelStoreSummary *) s, (CamelStoreInfo *) info);
d (" already there\n");
return info;
}
mi = (CamelIMAPXStoreInfo *) store_summary_class->store_info_load (s, in);
if (mi) {
if (camel_file_util_decode_string (in, &mi->full_name) == -1) {
- camel_store_summary_info_free (s, (CamelStoreInfo *) mi);
+ camel_store_summary_info_unref (s, (CamelStoreInfo *) mi);
mi = NULL;
} else {
/* NB: this is done again for compatability */
g_free (folder_dir);
g_free (base_dir);
- camel_store_summary_info_free (summary, si);
+ camel_store_summary_info_unref (summary, si);
} else {
g_set_error (
error, CAMEL_STORE_ERROR,
camel_store_summary_touch (store_summary);
camel_store_summary_save (store_summary);
}
- camel_store_summary_info_free (store_summary, si);
+ camel_store_summary_info_unref (store_summary, si);
}
if (emit_signal) {
camel_store_summary_touch (store_summary);
camel_store_summary_save (store_summary);
}
- camel_store_summary_info_free (store_summary, si);
+ camel_store_summary_info_unref (store_summary, si);
}
if (emit_signal) {
g_free (npath);
}
- camel_store_summary_info_free (
+ camel_store_summary_info_unref (
(CamelStoreSummary *) imapx_store->summary, si);
}
}
full_name = camel_imapx_store_info_full_name (imapx_store->summary, si);
if (!full_name || !*full_name) {
- camel_store_summary_info_free ((CamelStoreSummary *) imapx_store->summary, si);
+ camel_store_summary_info_unref ((CamelStoreSummary *) imapx_store->summary, si);
continue;
}
fi->flags |= CAMEL_FOLDER_NOCHILDREN;
g_ptr_array_add (folders, fi);
}
- camel_store_summary_info_free ((CamelStoreSummary *) imapx_store->summary, si);
+ camel_store_summary_info_unref ((CamelStoreSummary *) imapx_store->summary, si);
}
g_free (pattern);
}
endloop:
- camel_store_summary_info_free (store_summary, si);
+ camel_store_summary_info_unref (store_summary, si);
}
g_hash_table_destroy (folders_from_server);
TRUE, cancellable, NULL);
if (si)
- camel_store_summary_info_free (
+ camel_store_summary_info_unref (
(CamelStoreSummary *) imapx_store->summary, si);
}
}
}
if (si)
- camel_store_summary_info_free (
+ camel_store_summary_info_unref (
(CamelStoreSummary *) imapx_store->summary, si);
real_name = camel_imapx_store_summary_path_to_full (
(CamelStoreSummary *) imapx_store->summary, folder_name);
if (si) {
is_subscribed = (si->flags & CAMEL_STORE_INFO_FOLDER_SUBSCRIBED) != 0;
- camel_store_summary_info_free (
+ camel_store_summary_info_unref (
(CamelStoreSummary *) imapx_store->summary, si);
}
camel_file_util_decode_uint32 (in, &info->flags) == -1 ||
camel_file_util_decode_uint32 (in, &info->unread) == -1 ||
camel_file_util_decode_uint32 (in, &info->total) == -1) {
- camel_store_summary_info_free (summary, info);
+ camel_store_summary_info_unref (summary, info);
return NULL;
}
if (!ferror (in))
return info;
- camel_store_summary_info_free (summary, info);
+ camel_store_summary_info_unref (summary, info);
return NULL;
}
*
* Retrieve a summary item by index number.
*
- * A referenced to the summary item is returned, which may be ref'd or
- * free'd as appropriate.
- *
- * It must be freed using camel_store_summary_info_free().
+ * The returned #CamelStoreInfo is referenced for thread-safety and should be
+ * unreferenced with camel_store_summary_info_unref() when finished with it.
*
* Returns: the summary item, or %NULL if @index is out of range
**/
g_return_if_fail (array != NULL);
for (i = 0; i < array->len; i++)
- camel_store_summary_info_free (summary, array->pdata[i]);
+ camel_store_summary_info_unref (summary, array->pdata[i]);
g_ptr_array_free (array, TRUE);
}
*
* Retrieve a summary item by path name.
*
- * A referenced to the summary item is returned, which may be ref'd or
- * free'd as appropriate.
- *
- * It must be freed using camel_store_summary_info_free().
+ * The returned #CamelStoreInfo is referenced for thread-safety and should be
+ * unreferenced with camel_store_summary_info_unref() when finished with it.
*
* Returns: the summary item, or %NULL if the @path name is not
* available
*
* Create a new info record from a name.
*
- * This info record MUST be freed using
- * camel_store_summary_info_free(), camel_store_info_free() will not
- * work.
+ * Unreference the returned #CamelStoreInfo with
+ * camel_store_summary_info_unref() when finished with it.
*
* Returns: the #CamelStoreInfo associated with @path
**/
}
/**
- * camel_store_summary_info_free:
+ * camel_store_summary_info_ref:
+ * @summary: a #CamelStoreSummary object
+ * @info: a #CamelStoreInfo
+ *
+ * Add an extra reference to @info.
+ *
+ * Returns: the @info argument
+ **/
+CamelStoreInfo *
+camel_store_summary_info_ref (CamelStoreSummary *summary,
+ CamelStoreInfo *info)
+{
+ g_return_val_if_fail (info != NULL, NULL);
+ g_return_val_if_fail (info->refcount > 0, NULL);
+
+ g_atomic_int_inc (&info->refcount);
+
+ return info;
+}
+
+/**
+ * camel_store_summary_info_unref:
* @summary: a #CamelStoreSummary object
* @info: a #CamelStoreInfo
*
* Unref and potentially free @info, and all associated memory.
**/
void
-camel_store_summary_info_free (CamelStoreSummary *summary,
- CamelStoreInfo *info)
+camel_store_summary_info_unref (CamelStoreSummary *summary,
+ CamelStoreInfo *info)
{
g_return_if_fail (CAMEL_IS_STORE_SUMMARY (summary));
g_return_if_fail (info != NULL);
}
/**
- * camel_store_summary_info_ref:
- * @summary: a #CamelStoreSummary object
- * @info: a #CamelStoreInfo
- *
- * Add an extra reference to @info.
- *
- * Returns: the @info argument
- **/
-CamelStoreInfo *
-camel_store_summary_info_ref (CamelStoreSummary *summary,
- CamelStoreInfo *info)
-{
- g_return_val_if_fail (info != NULL, NULL);
- g_return_val_if_fail (info->refcount > 0, NULL);
-
- g_atomic_int_inc (&info->refcount);
-
- return info;
-}
-
-/**
* camel_store_summary_touch:
* @summary: a #CamelStoreSummary object
*
}
for (i = 0; i < summary->folders->len; i++)
- camel_store_summary_info_free (summary, summary->folders->pdata[i]);
+ camel_store_summary_info_unref (summary, summary->folders->pdata[i]);
g_ptr_array_set_size (summary->folders, 0);
g_hash_table_destroy (summary->folders_path);
summary->flags |= CAMEL_STORE_SUMMARY_DIRTY;
camel_store_summary_unlock (summary, CAMEL_STORE_SUMMARY_SUMMARY_LOCK);
- camel_store_summary_info_free (summary, info);
+ camel_store_summary_info_unref (summary, info);
}
/**
camel_store_summary_info_ref (summary, oldinfo);
camel_store_summary_unlock (summary, CAMEL_STORE_SUMMARY_SUMMARY_LOCK);
camel_store_summary_remove (summary, oldinfo);
- camel_store_summary_info_free (summary, oldinfo);
+ camel_store_summary_info_unref (summary, oldinfo);
} else {
camel_store_summary_unlock (summary, CAMEL_STORE_SUMMARY_SUMMARY_LOCK);
}
summary->flags |= CAMEL_STORE_SUMMARY_DIRTY;
camel_store_summary_unlock (summary, CAMEL_STORE_SUMMARY_SUMMARY_LOCK);
- camel_store_summary_info_free (summary, info);
+ camel_store_summary_info_unref (summary, info);
} else {
camel_store_summary_unlock (summary, CAMEL_STORE_SUMMARY_SUMMARY_LOCK);
}
g_warn_if_reached ();
}
- camel_store_summary_info_free (summary, si);
+ camel_store_summary_info_unref (summary, si);
camel_store_summary_unlock (summary, CAMEL_STORE_SUMMARY_SUMMARY_LOCK);
}
return FALSE;
}
- camel_store_summary_info_free (summary, si);
+ camel_store_summary_info_unref (summary, si);
if (g_hash_table_lookup (summary->priv->folder_summaries, folder_summary)) {
camel_store_summary_unlock (summary, CAMEL_STORE_SUMMARY_SUMMARY_LOCK);
CamelStoreInfo *
camel_store_summary_info_ref (CamelStoreSummary *summary,
CamelStoreInfo *info);
-void camel_store_summary_info_free (CamelStoreSummary *summary,
+void camel_store_summary_info_unref (CamelStoreSummary *summary,
CamelStoreInfo *info);
+/* Temporary backward-compatible alias. */
+#ifndef CAMEL_DISABLE_DEPRECATED
+#define camel_store_summary_info_free camel_store_summary_info_unref
+#endif /* CAMEL_DISABLE_DEPRECATED */
+
/* removes a summary item */
void camel_store_summary_remove (CamelStoreSummary *summary,
CamelStoreInfo *info);
if (si != NULL) {
subscribed =
(si->flags & CAMEL_STORE_INFO_FOLDER_SUBSCRIBED) != 0;
- camel_store_summary_info_free (
+ camel_store_summary_info_unref (
CAMEL_STORE_SUMMARY (nntp_store_summary), si);
}
*
* Retrieve a summary item by full name.
*
- * A referenced to the summary item is returned, which may be
- * ref'd or free'd as appropriate.
+ * The returned #CamelNNTPStoreInfo is referenced for thread-safety and should
+ * be unreferenced with camel_store_summary_info_unref() when finished with it.
*
* Returns: The summary item, or NULL if the @full_name name
* is not available.
- * It must be freed using camel_store_summary_info_free().
**/
CamelNNTPStoreInfo *
camel_nntp_store_summary_full_name (CamelNNTPStoreSummary *s,
if (info) {
if (strcmp (info->full_name, full_name) == 0)
return info;
- camel_store_summary_info_free ((CamelStoreSummary *) s, (CamelStoreInfo *) info);
+ camel_store_summary_info_unref ((CamelStoreSummary *) s, (CamelStoreInfo *) info);
}
}
/* path is already present, use the raw version we have */
if (si && strlen (subpath) == strlen (path)) {
f = g_strdup (camel_nntp_store_info_full_name (s, si));
- camel_store_summary_info_free ((CamelStoreSummary *) s, si);
+ camel_store_summary_info_unref ((CamelStoreSummary *) s, si);
return f;
}
if (si) {
full = g_strdup_printf ("%s%s", camel_nntp_store_info_full_name (s, si), f);
g_free (f);
- camel_store_summary_info_free ((CamelStoreSummary *) s, si);
+ camel_store_summary_info_unref ((CamelStoreSummary *) s, si);
f = full;
}
info = camel_nntp_store_summary_full_name (s, full_name);
if (info) {
- camel_store_summary_info_free ((CamelStoreSummary *) s, (CamelStoreInfo *) info);
+ camel_store_summary_info_unref ((CamelStoreSummary *) s, (CamelStoreInfo *) info);
d (printf (" already there\n"));
return info;
}
ni = (CamelNNTPStoreInfo *) CAMEL_STORE_SUMMARY_CLASS (camel_nntp_store_summary_parent_class)->store_info_load (s, in);
if (ni) {
if (camel_file_util_decode_string (in, &ni->full_name) == -1) {
- camel_store_summary_info_free (s, (CamelStoreInfo *) ni);
+ camel_store_summary_info_unref (s, (CamelStoreInfo *) ni);
return NULL;
}
if (((CamelNNTPStoreSummary *) s)->version >= CAMEL_NNTP_STORE_SUMMARY_VERSION_1) {
if (camel_file_util_decode_uint32 (in, &ni->first) == -1
|| camel_file_util_decode_uint32 (in, &ni->last) == -1) {
- camel_store_summary_info_free (s, (CamelStoreInfo *) ni);
+ camel_store_summary_info_unref (s, (CamelStoreInfo *) ni);
return NULL;
}
}
si->first = first;
if (fsi != NULL)
- camel_store_summary_info_free (store_summary, &fsi->info);
+ camel_store_summary_info_unref (store_summary, &fsi->info);
else /* TODO see if we really did touch it */
camel_store_summary_touch (store_summary);
first = fi;
last = fi;
}
- camel_store_summary_info_free (store_summary, si);
+ camel_store_summary_info_unref (store_summary, si);
}
g_clear_object (&nntp_store_summary);
}
} else if (subscribed_or_flag && first) {
/* we have already added subitems, but this item is no longer a subitem */
- camel_store_summary_info_free (store_summary, si);
+ camel_store_summary_info_unref (store_summary, si);
break;
}
- camel_store_summary_info_free (store_summary, si);
+ camel_store_summary_info_unref (store_summary, si);
}
g_hash_table_destroy (known);
if (si != NULL) {
truth = (si->flags & CAMEL_STORE_INFO_FOLDER_SUBSCRIBED) != 0;
- camel_store_summary_info_free (store_summary, si);
+ camel_store_summary_info_unref (store_summary, si);
}
g_clear_object (&nntp_store_summary);
camel_folder_info_free (fi);
}
- camel_store_summary_info_free (store_summary, si);
+ camel_store_summary_info_unref (store_summary, si);
}
g_clear_object (&nntp_store_summary);
camel_folder_info_free (fi);
}
- camel_store_summary_info_free (store_summary, si);
+ camel_store_summary_info_unref (store_summary, si);
}
g_clear_object (&nntp_store_summary);
camel_store_summary_touch (store_summary);
camel_store_summary_save (store_summary);
}
- camel_store_summary_info_free (
+ camel_store_summary_info_unref (
store_summary, (CamelStoreInfo *) si);
} else if (folder != NULL) {
camel_store_summary_info_new
camel_store_summary_info_new_from_path
camel_store_summary_info_ref
+camel_store_summary_info_unref
camel_store_summary_info_free
camel_store_summary_remove
camel_store_summary_remove_path