fixed linux-only crash when error message handler causes an error
[xonotic/netradiant.git] / radiant / main.cpp
index b66728a5a3de951bdf392cb590ab20bbd4705326..a1e39bad6833d61b74e83b43d745e3d612fb4655 100644 (file)
@@ -286,24 +286,22 @@ public:
     LineLimitedTextOutputStream outputStream(getOutputStream(), 24);
     write_stack_trace(outputStream);
     getOutputStream() << "----------------\n";
     LineLimitedTextOutputStream outputStream(getOutputStream(), 24);
     write_stack_trace(outputStream);
     getOutputStream() << "----------------\n";
+    globalErrorStream() << m_buffer.c_str();
     if(!m_lock.locked())
     {
       ScopedLock lock(m_lock);
 #if defined _DEBUG
       m_buffer << "Break into the debugger?\n";
     if(!m_lock.locked())
     {
       ScopedLock lock(m_lock);
 #if defined _DEBUG
       m_buffer << "Break into the debugger?\n";
-      globalErrorStream() << m_buffer.c_str();
       bool handled = gtk_MessageBox(0, m_buffer.c_str(), "Radiant - Runtime Error", eMB_YESNO, eMB_ICONERROR) == eIDNO;
       m_buffer.clear();
       return handled;
 #else
       m_buffer << "Please report this error to the developers\n";
       bool handled = gtk_MessageBox(0, m_buffer.c_str(), "Radiant - Runtime Error", eMB_YESNO, eMB_ICONERROR) == eIDNO;
       m_buffer.clear();
       return handled;
 #else
       m_buffer << "Please report this error to the developers\n";
-      globalErrorStream() << m_buffer.c_str();
       gtk_MessageBox(0, m_buffer.c_str(), "Radiant - Runtime Error", eMB_OK, eMB_ICONERROR);
       m_buffer.clear();
       gtk_MessageBox(0, m_buffer.c_str(), "Radiant - Runtime Error", eMB_OK, eMB_ICONERROR);
       m_buffer.clear();
-      return true;
 #endif
     }
 #endif
     }
-    return false;
+    return true;
   }
 };
 
   }
 };