--- a/ChangeLogs/Changes.txt Sat Jun 09 18:13:30 2012 -0400
+++ b/ChangeLogs/Changes.txt Wed Jun 20 23:31:00 2012 +0200
@@ -1,6 +1,10 @@
+ * Fixed crash when closing the Novell Groupwise account options. (#16041) +Version 1.5.1 (6/7/2012) * Adium is now securely signed with an Apple Developer ID for OS X 10.8 / GateKeeper compatibility.
* Updated to libpurple 2.10.4
* AIM/ICQ: Fixed communication with buddies containing periods and underscores.
@@ -18,6 +22,7 @@
* Fixed alphabetical contact list sorting involving diacritics such as "å" and "ä" (Rafael Glauber) (#12678)
* Made "View Release Notes" localizable. (#15914)
* Requires Mac OS X 10.6.8 or later.
--- a/Frameworks/Adium Framework/Source/AIAccountViewController.m Sat Jun 09 18:13:30 2012 -0400
+++ b/Frameworks/Adium Framework/Source/AIAccountViewController.m Wed Jun 20 23:31:00 2012 +0200
@@ -94,7 +94,8 @@
- [view_options release];
+ if (view_setup != view_options) + [view_options release]; [changedPrefDict release];
[[NSNotificationCenter defaultCenter] removeObserver:self];
--- a/Source/AILoggerPlugin.m Sat Jun 09 18:13:30 2012 -0400
+++ b/Source/AILoggerPlugin.m Wed Jun 20 23:31:00 2012 +0200
@@ -1445,10 +1445,13 @@
OSAtomicCompareAndSwap64Barrier(logsIndexed, 0, (int64_t*)&logsIndexed);
if (self.indexingAllowed) {
__block UInt32 lastUpdate = TickCount();
__block SInt32 unsavedChanges = 0;
@@ -1456,7 +1459,9 @@
AILogWithSignature(@"Cleaning %i dirty logs", [localLogSet count]);
dispatch_group_async(loggerPluginGroup, searchIndexQueue, blockWithAutoreleasePool(^{
dispatch_group_enter(logIndexingGroup);
while (_remainingLogs > 0 && bself.indexingAllowed) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
__block NSString *__logPath = nil;
@@ -1540,6 +1545,9 @@
dispatch_semaphore_signal(jobSemaphore);
+ OSAtomicIncrement64Barrier((int64_t *)&(bself->logsIndexed)); + OSAtomicDecrement64Barrier((int64_t *)&_remainingLogs); dispatch_semaphore_signal(jobSemaphore);
@@ -1555,6 +1563,7 @@
AILogWithSignature(@"Could not create document for %@ [%@]",logPath,[NSURL fileURLWithPath:logPath]);
if (document) CFRelease(document);
OSAtomicIncrement64Barrier((int64_t *)&(bself->logsIndexed));
+ OSAtomicDecrement64Barrier((int64_t *)&_remainingLogs); OSAtomicIncrement32Barrier((int32_t *)&unsavedChanges);
dispatch_semaphore_signal(jobSemaphore);
dispatch_semaphore_signal(logLoadingPrefetchSemaphore);
@@ -1568,6 +1577,7 @@
[bself _saveDirtyLogSet];
+ dispatch_group_enter(closingIndexGroup); dispatch_group_leave(logIndexingGroup);
dispatch_group_notify(logIndexingGroup, searchIndexQueue, ^{
dispatch_async(dispatch_get_main_queue(), ^{
@@ -1577,10 +1587,14 @@
AILogWithSignature(@"After cleaning dirty logs, the search index has a max ID of %i and a count of %i",
SKIndexGetMaximumDocumentID(searchIndex),
SKIndexGetDocumentCount(searchIndex));
+ CFRelease(searchIndex); [bself _didCleanDirtyLogs];
+ dispatch_group_leave(closingIndexGroup); + CFRelease(searchIndex); @@ -1654,7 +1668,7 @@
[bself _flushIndex:bself->logIndex];
if (bself.canCloseIndex) {
SKIndexClose(bself->logIndex);
- AILogWithSignature(@"**** Finished closing index %p", bself->logIndex);
+ AILogWithSignature(@"**** %@ Released its index %p", bself, bself->logIndex); @@ -1671,7 +1685,7 @@
- AILogWithSignature(@"**** Finished flushing index %p, and released it",inIndex);
+ AILogWithSignature(@"**** Finished flushing index %p",inIndex); self.indexIsFlushing = NO;