fix(addressbook): use pool to lower memory usage

This commit is contained in:
Francis Lachapelle
2021-10-01 11:11:00 -04:00
parent 4e6a7f5705
commit a073241e0f
3 changed files with 23 additions and 3 deletions
+1 -1
View File
@@ -691,7 +691,7 @@
else
[self appendMissingObjectRef: url
toBuffer: buffer];
if (count % 10 == 0)
if (count > 0 && count % 10 == 0)
{
RELEASE(pool);
pool = [[NSAutoreleasePool alloc] init];
+16 -2
View File
@@ -1288,11 +1288,13 @@ groupObjectClasses: (NSArray *) newGroupObjectClasses
withCriteria: (NSArray *) criteria
inDomain: (NSString *) theDomain
{
NSAutoreleasePool *pool;
NGLdapConnection *ldapConnection;
NGLdapEntry *currentEntry;
NSEnumerator *entries;
NSMutableArray *contacts;
EOQualifier *qualifier;
unsigned int i;
contacts = [NSMutableArray array];
@@ -1313,9 +1315,21 @@ groupObjectClasses: (NSArray *) newGroupObjectClasses
entries = [ldapConnection deepSearchAtBaseDN: _baseDN
qualifier: qualifier
attributes: _lookupFields];
i = 0;
pool = [NSAutoreleasePool new];
while ((currentEntry = [entries nextObject]))
[contacts addObject:
[self _convertLDAPEntryToContact: currentEntry]];
{
[contacts addObject:
[self _convertLDAPEntryToContact: currentEntry]];
i++;
if (i % 10 == 0)
{
[pool release];
pool = [NSAutoreleasePool new];
}
}
[pool release];
}
return contacts;
+6
View File
@@ -17,6 +17,9 @@
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#import <Foundation/NSAutoreleasePool.h>
#import <NGExtensions/NSNull+misc.h>
#import <NGExtensions/NSObject+Logs.h>
@@ -1202,6 +1205,7 @@ static Class NSNullK;
matching: (NSString *) filter
inDomain: (NSString *) domain
{
NSAutoreleasePool *pool;
NSMutableArray *contacts;
NSEnumerator *sources;
NSString *sourceID;
@@ -1211,11 +1215,13 @@ static Class NSNullK;
sources = [sourcesList objectEnumerator];
while ((sourceID = [sources nextObject]))
{
pool = [[NSAutoreleasePool alloc] init];
currentSource = [_sources objectForKey: sourceID];
[contacts addObjectsFromArray:
[currentSource fetchContactsMatching: filter
withCriteria: nil
inDomain: domain]];
RELEASE(pool);
}
return [self _compactAndCompleteContacts: [contacts objectEnumerator]];