adium 2340:a5d4f6cc2e54: Fix setting a status message from apple...

commits at adium.im commits at adium.im
Tue May 26 17:33:33 UTC 2009


details:	http://hg.adium.im/adium/rev/a5d4f6cc2e54
revision:	2340:a5d4f6cc2e54
author:		Zachary West <zacw at adium.im>
date:		Tue May 26 13:33:22 2009 -0400

Fix setting a status message from applescript. Fixes #12219.

Despite its name, this was *not* returning a mutableCopy for non-builtin statuses, so an extra -autorelease would cause it to die off, get popped, and error like crazy.

diffstat:

 Frameworks/Adium Framework/Source/AIAccount.m |  12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diffs (42 lines):

diff -r e17bcab9a10f -r a5d4f6cc2e54 Frameworks/Adium Framework/Source/AIAccount.m
--- a/Frameworks/Adium Framework/Source/AIAccount.m	Tue May 26 12:41:54 2009 -0400
+++ b/Frameworks/Adium Framework/Source/AIAccount.m	Tue May 26 13:33:22 2009 -0400
@@ -1216,17 +1216,21 @@
 }
 
 /**
- * @brief Returns current status (or mutable copy if built in)
+ * @brief Returns a mutable status
  *
  * If the current status is built in, we create a temporary copy of the current status and set that.
+ *
+ * @return An AIStatus fit for being modified.
  */
-- (AIStatus *)mutableCopyOfCurrentStatusIfBuiltIn
+- (AIStatus *)modifyableCurrentStatus
 {
 	AIStatus *currentStatus = self.statusState;
+	
 	if ([currentStatus mutabilityType] != AITemporaryEditableStatusState) {
 		currentStatus = [[currentStatus mutableCopy] autorelease];
 		[currentStatus setMutabilityType:AITemporaryEditableStatusState];
 	}	
+	
 	return currentStatus;
 }
 
@@ -1237,11 +1241,13 @@
  */
 - (void)setScriptingStatusMessageWithAttributedString:(id)message
 {
-	AIStatus *currentStatus = [[self mutableCopyOfCurrentStatusIfBuiltIn] autorelease];
+	AIStatus *currentStatus = [self modifyableCurrentStatus];
+	
 	if ([message isKindOfClass:[NSAttributedString class]])
 		[currentStatus setStatusMessage:(NSAttributedString *)message];
 	else
 		[currentStatus setStatusMessageString:message];
+	
 	[adium.statusController setActiveStatusState:currentStatus forAccount:self];
 }
 




More information about the commits mailing list