adium 2227:4410488f13d0: Avoid leaking protocol-status_text mess...

commits at adium.im commits at adium.im
Sun May 17 20:15:10 UTC 2009


details:	http://hg.adium.im/adium/rev/4410488f13d0
revision:	2227:4410488f13d0
author:		Zachary West <zacw at adium.im>
date:		Sun May 17 16:15:01 2009 -0400

Avoid leaking protocol-status_text messages.

diffstat:

 Plugins/Purple Service/CBPurpleAccount.m |  13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diffs (36 lines):

diff -r 75729afc39a1 -r 4410488f13d0 Plugins/Purple Service/CBPurpleAccount.m
--- a/Plugins/Purple Service/CBPurpleAccount.m	Sun May 17 14:36:43 2009 -0400
+++ b/Plugins/Purple Service/CBPurpleAccount.m	Sun May 17 16:15:01 2009 -0400
@@ -254,6 +254,7 @@
 	PurplePresence		*presence = purple_buddy_get_presence(buddy);
 	PurpleStatus		*status = (presence ? purple_presence_get_active_status(presence) : NULL);
 	const char			*message = (status ? purple_status_get_attr_string(status, "message") : NULL);
+	NSString			*statusMessage = nil;
 	
 	// Get the plugin's status message for this buddy if they don't have a status message
 	if (!message) {
@@ -263,16 +264,20 @@
 												NULL);
 		
 		if (prpl_info && prpl_info->status_text) {
-			message = (prpl_info->status_text)(buddy);
+			char *status_text = (prpl_info->status_text)(buddy);
 			
 			// Don't display "Offline" as a status message.
-			if (message && !strcmp(message, _("Offline"))) {
-				message = NULL;
+			if (status_text && strcmp(status_text, _("Offline")) != 0) {
+				statusMessage = [NSString stringWithUTF8String:status_text];				
 			}
+			
+			g_free(status_text);
 		}
+	} else {
+		statusMessage = [NSString stringWithUTF8String:message];
 	}
 	
-	return message ? [AIHTMLDecoder decodeHTML:[NSString stringWithUTF8String:message]] : nil;
+	return statusMessage ? [AIHTMLDecoder decodeHTML:statusMessage] : nil;
 }
 
 /*!




More information about the commits mailing list