diff --git a/src/assert.cc b/src/assert.cc index c58d8165..b36fc4e0 100644 --- a/src/assert.cc +++ b/src/assert.cc @@ -3,6 +3,10 @@ #include "exception.hh" #include "debug.hh" +#if defined(__CYGWIN__) +#include +#endif + #include #include @@ -24,8 +28,19 @@ void on_assert_failed(const char* message) String debug_info = "pid: " + to_string(getpid()); write_debug("assert failed: '"_str + message + "' " + debug_info); - int res = system(("xmessage -buttons 'quit:0,ignore:1' '"_str + - message + "\n[Debug Infos]\n" + debug_info + "'").c_str()); + const auto msg = message + "\n[Debug Infos]\n"_str + debug_info; +#if defined(__CYGWIN__) + int res = MessageBox(NULL, msg.c_str(), "Kakoune: assert failed", + MB_OKCANCEL | MB_ICONERROR); + switch (res) + { + case IDCANCEL: + throw assert_failed(message); + case IDOK: + return; + } +#else + int res = system(("xmessage -buttons 'quit:0,ignore:1' '" + msg + "'").c_str()); switch (res) { case -1: @@ -34,6 +49,7 @@ void on_assert_failed(const char* message) case 1: return; } +#endif } }