Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Fixed bug #1027
Browse files Browse the repository at this point in the history
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
  • Loading branch information
slouken committed Jan 20, 2011
1 parent 30596c9 commit 2d8a58a
Showing 1 changed file with 2 additions and 4 deletions.
6 changes: 2 additions & 4 deletions src/video/uikit/SDL_uikitview.m
Expand Up @@ -35,9 +35,6 @@
@implementation SDL_uikitview

- (void)dealloc {
#if SDL_IPHONE_KEYBOARD
[textField release];
#endif
[super dealloc];
}

Expand Down Expand Up @@ -220,7 +217,7 @@ - (BOOL)keyboardVisible {
/* 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 = @" ";
Expand All @@ -238,6 +235,7 @@ - (void)initializeKeyboard {
keyboardVisible = NO;
/* add the UITextField (hidden) to our view */
[self addSubview: textField];
[textField release];
}

/* reveal onscreen virtual keyboard */
Expand Down

0 comments on commit 2d8a58a

Please sign in to comment.