Mercurial > pidgin.yaz
comparison finch/gntblist.c @ 24482:0f7a248848ed
Properly escape the status message.
Fixes #7630.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Wed, 26 Nov 2008 00:41:53 +0000 |
parents | a4a7084ee09d |
children | 125cac3e24ee 9bdd3ab8087f e0c8f689f60c |
comparison
equal
deleted
inserted
replaced
24481:15db3067a5ac | 24482:0f7a248848ed |
---|---|
2205 static gboolean | 2205 static gboolean |
2206 remove_typing_cb(gpointer null) | 2206 remove_typing_cb(gpointer null) |
2207 { | 2207 { |
2208 PurpleSavedStatus *current; | 2208 PurpleSavedStatus *current; |
2209 const char *message, *newmessage; | 2209 const char *message, *newmessage; |
2210 char *escnewmessage; | |
2210 PurpleStatusPrimitive prim, newprim; | 2211 PurpleStatusPrimitive prim, newprim; |
2211 StatusBoxItem *item; | 2212 StatusBoxItem *item; |
2212 | 2213 |
2213 current = purple_savedstatus_get_current(); | 2214 current = purple_savedstatus_get_current(); |
2214 message = purple_savedstatus_get_message(current); | 2215 message = purple_savedstatus_get_message(current); |
2215 prim = purple_savedstatus_get_type(current); | 2216 prim = purple_savedstatus_get_type(current); |
2216 | 2217 |
2217 newmessage = gnt_entry_get_text(GNT_ENTRY(ggblist->statustext)); | 2218 newmessage = gnt_entry_get_text(GNT_ENTRY(ggblist->statustext)); |
2218 item = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(ggblist->status)); | 2219 item = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(ggblist->status)); |
2220 escnewmessage = newmessage ? g_markup_escape_text(newmessage, -1) : NULL; | |
2219 | 2221 |
2220 switch (item->type) { | 2222 switch (item->type) { |
2221 case STATUS_PRIMITIVE: | 2223 case STATUS_PRIMITIVE: |
2222 newprim = item->u.prim; | 2224 newprim = item->u.prim; |
2223 break; | 2225 break; |
2226 break; | 2228 break; |
2227 default: | 2229 default: |
2228 goto end; /* 'New' or 'Saved' is selected, but this should never happen. */ | 2230 goto end; /* 'New' or 'Saved' is selected, but this should never happen. */ |
2229 } | 2231 } |
2230 | 2232 |
2231 if (newprim != prim || ((message && !newmessage) || | 2233 if (newprim != prim || ((message && !escnewmessage) || |
2232 (!message && newmessage) || | 2234 (!message && escnewmessage) || |
2233 (message && newmessage && g_utf8_collate(message, newmessage) != 0))) | 2235 (message && escnewmessage && g_utf8_collate(message, escnewmessage) != 0))) |
2234 { | 2236 { |
2235 PurpleSavedStatus *status = purple_savedstatus_find_transient_by_type_and_message(newprim, newmessage); | 2237 PurpleSavedStatus *status = purple_savedstatus_find_transient_by_type_and_message(newprim, escnewmessage); |
2236 /* Holy Crap! That's a LAWNG function name */ | 2238 /* Holy Crap! That's a LAWNG function name */ |
2237 if (status == NULL) | 2239 if (status == NULL) |
2238 { | 2240 { |
2239 status = purple_savedstatus_new(NULL, newprim); | 2241 status = purple_savedstatus_new(NULL, newprim); |
2240 purple_savedstatus_set_message(status, newmessage); | 2242 purple_savedstatus_set_message(status, escnewmessage); |
2241 } | 2243 } |
2242 | 2244 |
2243 purple_savedstatus_activate(status); | 2245 purple_savedstatus_activate(status); |
2244 } | 2246 } |
2245 | 2247 |
2246 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree); | 2248 gnt_box_give_focus_to_child(GNT_BOX(ggblist->window), ggblist->tree); |
2247 end: | 2249 end: |
2250 g_free(escnewmessage); | |
2248 if (ggblist->typing) | 2251 if (ggblist->typing) |
2249 g_source_remove(ggblist->typing); | 2252 g_source_remove(ggblist->typing); |
2250 ggblist->typing = 0; | 2253 ggblist->typing = 0; |
2251 return FALSE; | 2254 return FALSE; |
2252 } | 2255 } |