Fixed bug #1027
authorSam Lantinga <slouken@libsdl.org>
Wed, 19 Jan 2011 23:45:29 -0800
changeset 5051 a69e36365766
parent 5050 2add0d17180b
child 5052 4cb4b18cbae3
Fixed bug #1027 Vittorio Giovara 2010-07-17 19:21:36 PDT fix the double free error in SDL_uikitview the variable 'textfield' is initialialized and set to autorelease. however in the dealloc method a second [release] is sent. If the textfield has not been set to nil before (with a viewDidUnload for example) this can lead to awful hard-to-find crashes when the SDL code terminates. the error message is -[textfield release] message sent to deallocated instance 0x4e5fa90 the fix is simple, just release the object as soon as it is added to the subview, see attached patch
src/video/uikit/SDL_uikitview.m
--- a/src/video/uikit/SDL_uikitview.m	Wed Jan 19 22:55:51 2011 -0800
+++ b/src/video/uikit/SDL_uikitview.m	Wed Jan 19 23:45:29 2011 -0800
@@ -35,9 +35,6 @@
 @implementation SDL_uikitview
 
 - (void)dealloc {
-#if SDL_IPHONE_KEYBOARD
-	[textField release];
-#endif
 	[super dealloc];
 }
 
@@ -220,7 +217,7 @@
 /* Set ourselves up as a UITextFieldDelegate */
 - (void)initializeKeyboard {
 		
-	textField = [[[UITextField alloc] initWithFrame: CGRectZero] autorelease];
+	textField = [[UITextField alloc] initWithFrame: CGRectZero];
 	textField.delegate = self;
 	/* placeholder so there is something to delete! */
 	textField.text = @" ";	
@@ -238,6 +235,7 @@
 	keyboardVisible = NO;
 	/* add the UITextField (hidden) to our view */
 	[self addSubview: textField];
+	[textField release];
 }
 
 /* reveal onscreen virtual keyboard */