diff --git a/uppsrc/Core/LocalProcess.cpp b/uppsrc/Core/LocalProcess.cpp index 7a014eed0..9a1da431c 100644 --- a/uppsrc/Core/LocalProcess.cpp +++ b/uppsrc/Core/LocalProcess.cpp @@ -605,6 +605,33 @@ void LocalProcess::CloseWrite() #endif } +/* +int LocalProcess::Finish(String& out) +{ + out.Clear(); + while(IsRunning()) { + String h = Get(); +// if(IsNull(h)) +// Sleep(1); // p.Wait would be much better here! +// else + out.Cat(h); + Sleep(1); // p.Wait would be much better here! + } + + LLOG("Finish: About to read the rest of output"); + + for(;;) { + String h = Get(); +// DDUMP(h.GetCount()); +// DDUMP(h.IsVoid()); + if(h.IsVoid()) + break; + out.Cat(h); + } + return GetExitCode(); +} +*/ + int LocalProcess::Finish(String& out) { out.Clear(); diff --git a/uppsrc/CtrlCore/CtrlPos.cpp b/uppsrc/CtrlCore/CtrlPos.cpp index 352304591..6773cb9b5 100644 --- a/uppsrc/CtrlCore/CtrlPos.cpp +++ b/uppsrc/CtrlCore/CtrlPos.cpp @@ -139,6 +139,8 @@ Size Ctrl::GetMaxSize() const void Ctrl::SyncLayout(int force) { GuiLock __; + if(destroying) + return; LLOG("SyncLayout " << Name() << " size: " << GetSize()); bool refresh = false; Rect oview = GetView(); diff --git a/uppsrc/CtrlCore/TopWindow.cpp b/uppsrc/CtrlCore/TopWindow.cpp index 8fc7a0671..357fe9fc3 100644 --- a/uppsrc/CtrlCore/TopWindow.cpp +++ b/uppsrc/CtrlCore/TopWindow.cpp @@ -507,6 +507,7 @@ TopWindow::TopWindow() TopWindow::~TopWindow() { GuiLock __; + destroying = true; if(InLoop()) EndLoop(IDOK); if(!IsChild())