Mercurial > pidgin.yaz
comparison libpurple/protocols/jabber/message.c @ 23446:44feef3c885c
A couple of leak fixes.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Sun, 01 Jun 2008 21:02:39 +0000 |
parents | 4ac5db6e39f3 |
children | b2697ab66d23 |
comparison
equal
deleted
inserted
replaced
23445:4ac5db6e39f3 | 23446:44feef3c885c |
---|---|
793 jabber_message_xhtml_find_smileys(const char *xhtml) | 793 jabber_message_xhtml_find_smileys(const char *xhtml) |
794 { | 794 { |
795 GList *smileys = purple_smileys_get_all(); | 795 GList *smileys = purple_smileys_get_all(); |
796 GList *found_smileys = NULL; | 796 GList *found_smileys = NULL; |
797 | 797 |
798 for (; smileys ; smileys = g_list_next(smileys)) { | 798 for (; smileys ; smileys = g_list_delete_link(smileys)) { |
799 PurpleSmiley *smiley = (PurpleSmiley *) smileys->data; | 799 PurpleSmiley *smiley = (PurpleSmiley *) smileys->data; |
800 const gchar *shortcut = purple_smiley_get_shortcut(smiley); | 800 const gchar *shortcut = purple_smiley_get_shortcut(smiley); |
801 const gssize len = strlen(shortcut); | 801 const gssize len = strlen(shortcut); |
802 | 802 |
803 gchar *escaped = g_markup_escape_text(shortcut, len); | 803 gchar *escaped = g_markup_escape_text(shortcut, len); |
813 return found_smileys; | 813 return found_smileys; |
814 } | 814 } |
815 | 815 |
816 static gchar * | 816 static gchar * |
817 jabber_message_get_smileyfied_xhtml(const PurpleConversation *conv, | 817 jabber_message_get_smileyfied_xhtml(const PurpleConversation *conv, |
818 const gchar *xhtml, const GList *smileys) | 818 const gchar *xhtml, const GList *smileys) |
819 { | 819 { |
820 /* create XML element for all smileys (img tags) */ | 820 /* create XML element for all smileys (img tags) */ |
821 GString *result = g_string_new(NULL); | 821 GString *result = g_string_new(NULL); |
822 int pos = 0; | 822 int pos = 0; |
823 int length = strlen(xhtml); | 823 int length = strlen(xhtml); |
971 xmlnode_insert_data(child, jm->body, -1); | 971 xmlnode_insert_data(child, jm->body, -1); |
972 } | 972 } |
973 | 973 |
974 if(jm->xhtml) { | 974 if(jm->xhtml) { |
975 PurpleAccount *account = purple_connection_get_account(jm->js->gc); | 975 PurpleAccount *account = purple_connection_get_account(jm->js->gc); |
976 PurpleConversation *conv = | 976 PurpleConversation *conv = |
977 purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, jm->to, | 977 purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, jm->to, |
978 account); | 978 account); |
979 | 979 |
980 if (jabber_conv_support_custom_smileys(jm->js->gc, conv, jm->to)) { | 980 if (jabber_conv_support_custom_smileys(jm->js->gc, conv, jm->to)) { |
981 const GList *found_smileys = | 981 GList *found_smileys = jabber_message_xhtml_find_smileys(jm->xhtml); |
982 jabber_message_xhtml_find_smileys(jm->xhtml); | 982 |
983 | |
984 if (found_smileys) { | 983 if (found_smileys) { |
985 gchar *smileyfied_xhtml = NULL; | 984 gchar *smileyfied_xhtml = NULL; |
986 const GList *iterator; | 985 const GList *iterator; |
987 | 986 |
988 for (iterator = found_smileys; iterator ; | 987 for (iterator = found_smileys; iterator ; |
989 iterator = g_list_next(iterator)) { | 988 iterator = g_list_next(iterator)) { |
990 const PurpleSmiley *smiley = | 989 const PurpleSmiley *smiley = |
991 (PurpleSmiley *) iterator->data; | 990 (PurpleSmiley *) iterator->data; |
992 const gchar *shortcut = purple_smiley_get_shortcut(smiley); | 991 const gchar *shortcut = purple_smiley_get_shortcut(smiley); |
993 const JabberData *data = | 992 const JabberData *data = |
994 jabber_data_find_local_by_alt(conv, shortcut); | 993 jabber_data_find_local_by_alt(conv, shortcut); |
995 | 994 |
996 /* if data has not been sent before, include data */ | 995 /* if data has not been sent before, include data */ |
997 if (!data) { | 996 if (!data) { |
998 PurpleStoredImage *image = | 997 PurpleStoredImage *image = |
999 purple_smiley_get_stored_image(smiley); | 998 purple_smiley_get_stored_image(smiley); |
1000 const gchar *ext = purple_imgstore_get_extension(image); | 999 const gchar *ext = purple_imgstore_get_extension(image); |
1001 | 1000 |
1002 JabberData *new_data = | 1001 JabberData *new_data = |
1003 jabber_data_create_from_data(purple_imgstore_get_data(image), | 1002 jabber_data_create_from_data(purple_imgstore_get_data(image), |
1004 purple_imgstore_get_size(image), | 1003 purple_imgstore_get_size(image), |
1005 jabber_message_get_mimetype_from_ext(ext), | 1004 jabber_message_get_mimetype_from_ext(ext), |
1006 shortcut); | 1005 shortcut); |
1007 jabber_data_associate_local_with_conv(new_data, conv); | 1006 jabber_data_associate_local_with_conv(new_data, conv); |
1008 xmlnode_insert_child(message, | 1007 xmlnode_insert_child(message, |
1009 jabber_data_get_xml_definition(new_data)); | 1008 jabber_data_get_xml_definition(new_data)); |
1010 } | 1009 } |
1011 } | 1010 } |
1012 | 1011 |
1013 smileyfied_xhtml = | 1012 smileyfied_xhtml = |
1014 jabber_message_get_smileyfied_xhtml(conv, jm->xhtml, | 1013 jabber_message_get_smileyfied_xhtml(conv, jm->xhtml, |
1015 found_smileys); | 1014 found_smileys); |
1016 child = xmlnode_from_str(smileyfied_xhtml, -1); | 1015 child = xmlnode_from_str(smileyfied_xhtml, -1); |
1017 g_free(smileyfied_xhtml); | 1016 g_free(smileyfied_xhtml); |
1017 g_list_free(found_smileys); | |
1018 } else { | 1018 } else { |
1019 child = xmlnode_from_str(jm->xhtml, -1); | 1019 child = xmlnode_from_str(jm->xhtml, -1); |
1020 } | 1020 } |
1021 } else { | 1021 } else { |
1022 child = xmlnode_from_str(jm->xhtml, -1); | 1022 child = xmlnode_from_str(jm->xhtml, -1); |
1197 gboolean jabber_custom_smileys_isenabled(JabberStream *js, const gchar *shortname, | 1197 gboolean jabber_custom_smileys_isenabled(JabberStream *js, const gchar *shortname, |
1198 const gchar *namespace) | 1198 const gchar *namespace) |
1199 { | 1199 { |
1200 const PurpleConnection *gc = js->gc; | 1200 const PurpleConnection *gc = js->gc; |
1201 PurpleAccount *account = purple_connection_get_account(gc); | 1201 PurpleAccount *account = purple_connection_get_account(gc); |
1202 | 1202 |
1203 return purple_account_get_bool(account, "custom_smileys", TRUE); | 1203 return purple_account_get_bool(account, "custom_smileys", TRUE); |
1204 } | 1204 } |