ret = procmime_get_part(part_filename, partinfo);
if (single_part)
- procmime_mimeinfo_free_all(partinfo);
+ procmime_mimeinfo_free_all(&partinfo);
g_free(filename);
if (ret < 0) {
g_strdup(procmime_mimeinfo_get_parameter(
partinfo, "charset"));
}
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
}
}
if (!mimeinfo) return;
if (mimeinfo->node->children == NULL) {
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
return;
}
g_free(outfile);
NEXT_PART_NOT_CHILD(child);
}
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
}
#undef NEXT_PART_NOT_CHILD
procmime_write_mimeinfo(mimemsg, fp);
- procmime_mimeinfo_free_all(mimemsg);
+ procmime_mimeinfo_free_all(&mimemsg);
return 0;
}
/* check for attachments */
if (mimeinfo != NULL) {
g_node_children_foreach(mimeinfo->node, G_TRAVERSE_ALL, msginfo_set_mime_flags, msginfo);
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
procmsg_msginfo_set_flags(msginfo, 0, MSG_SCANNED);
}
/* check for attachments */
if (mimeinfo != NULL) {
g_node_children_foreach(mimeinfo->node, G_TRAVERSE_ALL, msginfo_set_mime_flags, msginfo);
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
procmsg_msginfo_set_flags(msginfo, 0, MSG_SCANNED);
}
if (partinfo->type == MIMETYPE_TEXT) {
first_text_found = TRUE;
if (matcherlist_match_text_content(matchers, partinfo)) {
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
return TRUE;
}
} else if (matcherlist_match_binary_content(matchers, partinfo)) {
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
return TRUE;
}
if (body_only && first_text_found)
break;
}
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
return FALSE;
}
mimeview->check_data->free_after_use = TRUE;
#endif
if (mimeview->mimeinfo != NULL && !defer) {
- procmime_mimeinfo_free_all(mimeview->mimeinfo);
+ procmime_mimeinfo_free_all(&mimeview->mimeinfo);
mimeview->mimeinfo = NULL;
} else if (defer) {
#ifdef USE_PTHREAD
if (must_free) {
debug_print("freeing deferred mimeinfo\n");
- procmime_mimeinfo_free_all(mimeview->check_data->siginfo);
+ procmime_mimeinfo_free_all(&mimeview->check_data->siginfo);
}
g_free(mimeview->check_data);
}
}
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
return (result.status == OK) ? FALSE : TRUE;
}
}
g_node_unlink(decinfo->node);
- procmime_mimeinfo_free_all(parseinfo);
+ procmime_mimeinfo_free_all(&parseinfo);
decinfo->tmp = TRUE;
}
g_node_unlink(decinfo->node);
- procmime_mimeinfo_free_all(parseinfo);
+ procmime_mimeinfo_free_all(&parseinfo);
decinfo->tmp = TRUE;
/* create encrypted multipart */
g_node_unlink(msgcontent->node);
- procmime_mimeinfo_free_all(msgcontent);
+ procmime_mimeinfo_free_all(&msgcontent);
g_node_append(mimeinfo->node, encmultipart->node);
newinfo = procmime_mimeinfo_new();
return -1;
g_node_unlink(decinfo->node);
- procmime_mimeinfo_free_all(newinfo);
+ procmime_mimeinfo_free_all(&newinfo);
decinfo->tmp = TRUE;
parentinfo = procmime_mimeinfo_parent(mimeinfo);
}
g_node_unlink(decinfo->node);
- procmime_mimeinfo_free_all(parseinfo);
+ procmime_mimeinfo_free_all(&parseinfo);
decinfo->tmp = TRUE;
g_free(textstr);
/* create encrypted multipart */
- procmime_mimeinfo_free_all(msgcontent);
+ procmime_mimeinfo_free_all(&msgcontent);
g_node_append(mimeinfo->node, encmultipart->node);
encmultipart->content = MIMECONTENT_FILE;
fclose(fp);
if (g_stat(tmpfilename, &statbuf) < 0) {
claws_unlink(tmpfilename);
- procmime_mimeinfo_free_all(sub_info);
+ procmime_mimeinfo_free_all(&sub_info);
return NULL;
}
FILE_OP_ERROR(tmpfilename, "fwrite");
fclose(fp);
claws_unlink(tmpfilename);
- procmime_mimeinfo_free_all(sub_info);
+ procmime_mimeinfo_free_all(&sub_info);
return tnef_broken_mimeinfo(_("Failed to write the part data."));
}
fclose(fp);
if (g_stat(tmpfilename, &statbuf) < 0) {
claws_unlink(tmpfilename);
- procmime_mimeinfo_free_all(sub_info);
+ procmime_mimeinfo_free_all(&sub_info);
return tnef_broken_mimeinfo(_("Failed to write the part data."));
} else {
sub_info->tmp = TRUE;
if (!result) {
claws_unlink(tmpfilename);
- procmime_mimeinfo_free_all(sub_info);
+ procmime_mimeinfo_free_all(&sub_info);
return tnef_broken_mimeinfo(_("Failed to parse VCalendar data."));
}
return sub_info;
}
if (!result) {
claws_unlink(tmpfilename);
- procmime_mimeinfo_free_all(sub_info);
+ procmime_mimeinfo_free_all(&sub_info);
return tnef_broken_mimeinfo(_("Failed to parse VTask data."));
}
return sub_info;
if (!result) {
claws_unlink(tmpfilename);
- procmime_mimeinfo_free_all(sub_info);
+ procmime_mimeinfo_free_all(&sub_info);
return tnef_broken_mimeinfo(_("Failed to parse VCard data."));
}
return sub_info;
parentinfo = procmime_mimeinfo_parent(mimeinfo);
childnumber = g_node_child_index(parentinfo->node, mimeinfo);
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
g_node_insert(parentinfo->node, childnumber, decryptedinfo->node);
if (mimeinfo->privacy)
privacy_free_privacydata(mimeinfo->privacy);
- g_free(mimeinfo);
-
return FALSE;
}
-void procmime_mimeinfo_free_all(MimeInfo *mimeinfo)
+void procmime_mimeinfo_free_all(MimeInfo **mimeinfo_ptr)
{
+ MimeInfo *mimeinfo = *mimeinfo_ptr;
GNode *node;
if (!mimeinfo)
g_node_traverse(node, G_IN_ORDER, G_TRAVERSE_ALL, -1, free_func, NULL);
g_node_destroy(node);
+
+ g_free(mimeinfo);
+ *mimeinfo_ptr = NULL;
}
MimeInfo *procmime_mimeinfo_parent(MimeInfo *mimeinfo)
* fully for non-empty parts
*/
short_scan = FALSE;
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
goto scan_again;
} else if (!empty_ok && !short_scan) {
/* if full scan didn't find a non-empty part, rescan
* accepting empty parts
*/
empty_ok = TRUE;
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
goto scan_again;
}
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
/* outfp already unlocked at this time */
return outfp;
if (partinfo)
outfp = procmime_get_text_content(partinfo);
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
/* outfp already unlocked at this time */
return outfp;
partinfo = mimeinfo;
result = (find_encrypted_part(partinfo) != NULL);
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
return result;
}
* this avoids DOSsing ourselves
* with enormous messages
*/
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
return -1;
}
g_node_append(parent->node, mimeinfo->node);
/* MimeInfo handling */
MimeInfo *procmime_mimeinfo_new (void);
-void procmime_mimeinfo_free_all (MimeInfo *mimeinfo);
+void procmime_mimeinfo_free_all (MimeInfo **mimeinfo_ptr);
MimeInfo *procmime_mimeinfo_insert (MimeInfo *parent,
MimeInfo *mimeinfo);