From: anv Date: Wed, 17 Jun 2015 08:38:06 +0000 (+0300) Subject: 0026347: Crash on the application close X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=d56561505a99af058291fe303e2e6e31f8e39f93;p=occt-copy.git 0026347: Crash on the application close Changing procedure to end execution of Tcl according to the documentation to prevent crashes --- diff --git a/src/Draw/Draw_Interpretor.cxx b/src/Draw/Draw_Interpretor.cxx index df09c8bdf6..cf9753fa6c 100644 --- a/src/Draw/Draw_Interpretor.cxx +++ b/src/Draw/Draw_Interpretor.cxx @@ -199,7 +199,7 @@ static Standard_Integer CommandCmd if (cc && Draw::Atoi(cc)) { #ifdef WNT - Tcl_Exit(0); + Tcl_Finalize(); #else Tcl_Eval(interp,"exit"); #endif @@ -558,7 +558,7 @@ Draw_Interpretor::~Draw_Interpretor() #if ((TCL_MAJOR_VERSION > 8) || ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 4))) try { OCC_CATCH_SIGNALS - Tcl_Exit(0); + Tcl_Finalize(); } catch (Standard_Failure) { #ifdef OCCT_DEBUG @@ -567,7 +567,7 @@ Draw_Interpretor::~Draw_Interpretor() } #else #ifdef WNT - Tcl_Exit(0); + Tcl_Finalize(); #endif #endif } diff --git a/src/Draw/Draw_Window.cxx b/src/Draw/Draw_Window.cxx index ddebf5a682..67c9d18d90 100644 --- a/src/Draw/Draw_Window.cxx +++ b/src/Draw/Draw_Window.cxx @@ -1206,7 +1206,7 @@ static void StdinProc(ClientData clientData, int ) if (count < 0) { if (!gotPartial) { if (tty) { - Tcl_Exit(0); + Tcl_Finalize(); } else { Tcl_DeleteChannelHandler(chan, StdinProc, (ClientData) chan); } @@ -2103,7 +2103,7 @@ static DWORD WINAPI tkLoop(VOID) fprintf (stderr, "%s\n", interp->result); #endif cout << "tkLoop: Tk_MainWindow() returned NULL. Exiting...\n"; - Tcl_Exit (0); + Tcl_Finalize(); } Tk_Name(mainWindow) = Tk_GetUid (Tk_SetAppName (mainWindow, "Draw")); } @@ -2147,7 +2147,7 @@ static DWORD WINAPI tkLoop(VOID) toLoop = (Tk_GetNumMainWindows() > 0) || Draw_VirtualWindows; #endif } - Tcl_Exit(0); + Tcl_Finalize(); return 0; }