getting rid of several potential memory leaks and incorrect releases

This commit is contained in:
Lysann Schlegel
2012-11-11 00:25:47 +01:00
parent 233c496fa0
commit 9892efab93
2 changed files with 5 additions and 9 deletions

View File

@@ -53,7 +53,7 @@
if(self) {
wm = wm_;
device = device_;
device = [device_ retain];
controlChannel = nil;
interruptChannel = nil;
@@ -161,9 +161,6 @@
// forward event data to C struct
memcpy(wm->event_buf, data, sizeof(wm->event_buf));
// clear local buffer
[firstData release];
}
[receivedDataLock unlock];
@@ -175,11 +172,11 @@
NSRunLoop *theRL = [NSRunLoop currentRunLoop];
while (true) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // This is used for fast release of NSDate, otherwise it leaks
if(![theRL runMode:NSDefaultRunLoopMode beforeDate:timeoutDate]) {
WIIUSE_ERROR("Could not start run loop while waiting for read [id %i].", wm->unid);
break;
}
[pool drain];
[receivedDataLock lock];
NSUInteger count = [receivedData count];
@@ -193,8 +190,6 @@
// timeout
break;
}
[pool drain];
}
}
@@ -271,9 +266,11 @@
}
// copy the data into the buffer
NSData* newData = [[NSData alloc] initWithBytes:data length:length];
[receivedDataLock lock];
[receivedData addObject: [[NSData alloc] initWithBytes:data length:length]];
[receivedData addObject: newData];
[receivedDataLock unlock];
[newData release];
}
@end

View File

@@ -131,7 +131,6 @@
// save the device in the wiimote structure
wiimotes[i]->objc_wm = (void*) [[WiiuseWiimote alloc] initWithPtr:wiimotes[i] device: device];
[device retain]; // must retain it for later access through its ref
// mark as found
WIIMOTE_ENABLE_STATE(wiimotes[i], WIIMOTE_STATE_DEV_FOUND);