aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-05-02 00:48:02 +0530
committerAkshay Nair <phenax5@gmail.com>2025-05-02 16:23:56 +0530
commit8a71de53c002b7afdd516cff7190896d40496483 (patch)
tree96345b83f4ce010e84f0ba4b52f2846c449287bb
parent00efc9757475b3b347fee0ce2aaccfbf4b1c33b5 (diff)
downloadnull-browser-8a71de53c002b7afdd516cff7190896d40496483.tar.gz
null-browser-8a71de53c002b7afdd516cff7190896d40496483.zip
Fix luv callback error triggering exit and segfault
-rw-r--r--src/LuaRuntime.cpp6
-rw-r--r--src/widgets/BrowserWindow.cpp6
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