diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-05-02 00:48:02 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-05-02 16:23:56 +0530 |
| commit | 8a71de53c002b7afdd516cff7190896d40496483 (patch) | |
| tree | 96345b83f4ce010e84f0ba4b52f2846c449287bb | |
| parent | 00efc9757475b3b347fee0ce2aaccfbf4b1c33b5 (diff) | |
| download | null-browser-8a71de53c002b7afdd516cff7190896d40496483.tar.gz null-browser-8a71de53c002b7afdd516cff7190896d40496483.zip | |
Fix luv callback error triggering exit and segfault
| -rw-r--r-- | src/LuaRuntime.cpp | 6 | ||||
| -rw-r--r-- | src/widgets/BrowserWindow.cpp | 6 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/LuaRuntime.cpp b/src/LuaRuntime.cpp index eaf3df7..07ddb67 100644 --- a/src/LuaRuntime.cpp +++ b/src/LuaRuntime.cpp @@ -1,4 +1,5 @@ #include <QtCore> +#include <cstdio> #include <cstdlib> #include <cstring> #include <lua.hpp> @@ -19,6 +20,10 @@ LuaRuntime::LuaRuntime() { init_web_api(); } +int luv_callback(lua_State *state, int nargs, int nresults, int flags) { + return luv_cfpcall(state, nargs, nresults, flags | LUVF_CALLBACK_NOEXIT); +} + void LuaRuntime::start_event_loop() { if (event_loop != nullptr) stop_event_loop(); @@ -28,6 +33,7 @@ void LuaRuntime::start_event_loop() { // Load `uv` (luv) luv_set_loop(state, event_loop->get_uv_loop()); + luv_set_callback(state, &luv_callback); luaopen_luv(state); lua_setglobal(state, uv_global_name); } diff --git a/src/widgets/BrowserWindow.cpp b/src/widgets/BrowserWindow.cpp index ba0c244..d1b9c44 100644 --- a/src/widgets/BrowserWindow.cpp +++ b/src/widgets/BrowserWindow.cpp @@ -1,8 +1,9 @@ #include <QKeyEvent> +#include <QLabel> +#include <QMainWindow> #include <QStackedLayout> #include <QVBoxLayout> #include <QtCore> -#include <qmainwindow.h> #include "Configuration.hpp" #include "WindowMediator.hpp" @@ -16,10 +17,9 @@ BrowserWindow::BrowserWindow(const Configuration &configuration, QWebEngineProfi setCentralWidget(new QWidget()); // Root stacked layout - auto *layout = new QStackedLayout(); + auto *layout = new QVBoxLayout(); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); - layout->setStackingMode(QStackedLayout::StackAll); centralWidget()->setLayout(layout); // Webengine profile |
