From ee5d05f0fc03e65f50364f5b9f4315065f9f49c2 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Tue, 14 Oct 2025 13:39:22 +0100 Subject: [PATCH] hookSystem: fix anchor point for mmap --- src/plugins/HookSystem.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/plugins/HookSystem.cpp b/src/plugins/HookSystem.cpp index 31124d4f..4cd82550 100644 --- a/src/plugins/HookSystem.cpp +++ b/src/plugins/HookSystem.cpp @@ -172,7 +172,7 @@ bool CFunctionHook::hook() { return false; } - if (rc(m_source) - rc(m_destination) > 2000000000 /* 2 GB */) { + if (std::abs(rc(m_source) - rc(m_destination)) > 2000000000 /* 2 GB */) { Debug::log(ERR, "[functionhook] failed, source and dest are over 2GB apart"); return false; } @@ -312,8 +312,11 @@ static uintptr_t seekNewPageAddr() { continue; } - if (start - lastEnd > PAGESIZE_VAR * 2) { - if (!line.contains("Hyprland") && !anchoredToHyprland) { + if (!anchoredToHyprland && line.contains("Hyprland")) { + Debug::log(LOG, "seekNewPageAddr: Anchored to hyprland at 0x{:x}", start); + anchoredToHyprland = true; + } else if (start - lastEnd > PAGESIZE_VAR * 2) { + if (!anchoredToHyprland) { Debug::log(LOG, "seekNewPageAddr: skipping gap 0x{:x}-0x{:x}, not anchored to Hyprland code pages yet.", lastEnd, start); lastStart = start; lastEnd = end; @@ -325,11 +328,6 @@ static uintptr_t seekNewPageAddr() { return lastEnd; } - if (!anchoredToHyprland && line.contains("Hyprland")) { - Debug::log(LOG, "seekNewPageAddr: Anchored to hyprland at 0x{:x}", start); - anchoredToHyprland = true; - } - lastStart = start; lastEnd = end; }