changeset 9216:785843452a56 draft

(svn r13082) -Fix (r13042): segmentation fault due to too early deletion of OskWindow.
author glx <glx@openttd.org>
date Wed, 14 May 2008 01:57:12 +0000
parents 9e2b4d83a8f7
children 118e3a69d402
files src/osk_gui.cpp
diffstat 1 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/osk_gui.cpp
+++ b/src/osk_gui.cpp
@@ -129,6 +129,8 @@
 			return;
 		}
 
+		bool delete_this = false;
+
 		switch (widget) {
 			case OSK_WIDGET_BACKSPACE:
 				if (DeleteTextBufferChar(&this->qs->text, WKC_BACKSPACE)) this->InvalidateWidget(OSK_WIDGET_TEXT);
@@ -171,7 +173,7 @@
 						this->parent->OnClick(pt, this->ok_btn);
 					}
 				}
-				delete this;
+				delete_this = true;
 				break;
 
 			case OSK_WIDGET_CANCEL:
@@ -182,12 +184,13 @@
 					strcpy(qs->text.buf, this->orig_str_buf);
 					UpdateTextBufferSize(&qs->text);
 					MoveTextBufferPos(&qs->text, WKC_END);
-					delete this;
+					delete_this = true;
 				}
 				break;
 		}
 		/* make sure that the parent window's textbox also gets updated */
 		if (this->parent != NULL) this->parent->InvalidateWidget(this->text_btn);
+		if (delete_this) delete this;
 	}
 
 	virtual void OnMouseLoop()