# HG changeset patch # User Sam Lantinga # Date 1295509529 28800 # Node ID a69e363657664472b629ed5bb3d9b63686a549ec # Parent 2add0d17180bae98ff35bfe702330febc8c645cb 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 diff -r 2add0d17180b -r a69e36365766 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 */