Mercurial > sdl-ios-xcode
changeset 5051:a69e36365766
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
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Wed, 19 Jan 2011 23:45:29 -0800 |
parents | 2add0d17180b |
children | 4cb4b18cbae3 |
files | src/video/uikit/SDL_uikitview.m |
diffstat | 1 files changed, 2 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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 */