From d9d5823fdba38b7bd79ed88862d0f2c6d28a7c3e Mon Sep 17 00:00:00 2001 From: llm96 Date: Fri, 1 May 2026 22:42:45 +0100 Subject: [PATCH] rawinput: add missing nullptr check (#666) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Link to GitHub Issue or related Pull Request, if one exists N/A ## Description of change Fixes a crash when opening the properties modal on a Naive button bind. https://github.com/spice2x/spice2x.github.io/blob/82dda3380039bbaa995ee99e2d3effebbcb58082/src/spice2x/overlay/windows/config.cpp#L2081 Binds: image Stack trace from Debug build: ``` overlay::windows::Config::edit_button_popup(const std::string &, const std::string &, Button *, float, int) config.cpp:2081 overlay::windows::Config::build_button(const std::string &, Button &, Button *, int, int, int) config.cpp:1050 overlay::windows::Config::build_buttons(const std::string &, std::vector<…> *, int, int) config.cpp:718 overlay::windows::Config::build_content() config.cpp:283 overlay::Window::build() window.cpp:96 overlay::SpiceOverlay::new_frame() overlay.cpp:486 graphics_d3d9_on_present(HWND__ *, IDirect3DDevice9 *, IDirect3DDevice9 *) d3d9_backend.cpp:1447 __ZN23WrappedIDirect3DDevice97PresentEPK7tagRECTS2_P6HWND__PK8_RGNDATA@20 d3d9_device.cpp:396 main_implementation(int, char **) launcher.cpp:2453 main launcher.cpp:2671 ``` Relevant snippet from error log: ``` [2026/05/01 18:50:17] M:config: tab selection changed from 0 to 1 [2026/05/01 18:50:48] W:signal: exception raised: EXCEPTION_ACCESS_VIOLATION [2026/05/01 18:50:48] W:troubleshooter: /-------------------------- spice2x auto-troubleshooter -----------------------\ spice2x version: 2026-04-23 game version: LDJ:J:A:A:2013090900 the game has crashed * share this entire log file with someone for troubleshooting (log.txt) * spice will also attempt to create a minidump (minidump.dmp) minidump should only be shared with people you trust as it may contain sensitive data (PCBID, card ID, etc) log level is set to `disable` (either in avs-config.xml or using -loglevel) this log file may have omitted important error messages from the game if you are troubleshooting crashes or failures, it is recommended that you set AVS Log Level (-loglevel) option to `all` unsure what to do next? * update to the latest version: https://github.com/spice2x/spice2x.github.io/releases * check the FAQ: https://github.com/spice2x/spice2x.github.io/wiki/Known-issues \------------------------- spice2x auto-troubleshooter ------------------------/ [2026/05/01 18:50:48] I:signal: printing callstack [2026/05/01 18:50:48] I:stackwalker: 006A7001 (spice): (unknown): (unknown) [2026/05/01 18:50:48] I:stackwalker: 0068DF8C (spice): (unknown): (unknown) [2026/05/01 18:50:48] I:stackwalker: 0069A7C1 (spice): (unknown): (unknown) [2026/05/01 18:50:48] I:stackwalker: 0069B857 (spice): (unknown): (unknown) [2026/05/01 18:50:48] I:stackwalker: 0066461F (spice): (unknown): (unknown) [2026/05/01 18:50:48] I:stackwalker: 00663B7A (spice): (unknown): (unknown) [2026/05/01 18:50:48] I:stackwalker: 0045B548 (spice): (unknown): (unknown) [2026/05/01 18:50:48] I:stackwalker: 004FE1CE (spice): (unknown): (unknown) [2026/05/01 18:50:48] I:stackwalker: 1008AD13 (bm2dx): (unknown): dll_entry_main [2026/05/01 18:50:48] I:stackwalker: 100934A7 (bm2dx): (unknown): dll_entry_main [2026/05/01 18:50:48] I:stackwalker: 10088D24 (bm2dx): (unknown): dll_entry_main [2026/05/01 18:50:48] I:stackwalker: 0044B8A6 (spice): (unknown): (unknown) [2026/05/01 18:50:48] I:stackwalker: 77290CB7 (ntdll): (unknown): RtlGetSystemTimeAndBias [2026/05/01 18:50:53] F:signal: end [2026/05/01 18:50:53] I:launcher: stopping subsystems [2026/05/01 18:50:53] I:logger: stop [2026/05/01 18:50:53] I:audio: stopping [2026/05/01 18:50:54] I:rawinput: disposing devices [2026/05/01 18:50:54] I:xinput: destroyed ``` ## Testing Replicated on upstream build from `spice2x-26-04-23-full.zip` --- src/spice2x/overlay/windows/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spice2x/overlay/windows/config.cpp b/src/spice2x/overlay/windows/config.cpp index 4d650c8..7074b3a 100644 --- a/src/spice2x/overlay/windows/config.cpp +++ b/src/spice2x/overlay/windows/config.cpp @@ -2078,7 +2078,7 @@ namespace overlay::windows { } // bat threshold - if (device->type == rawinput::HID && + if (device != nullptr && device->type == rawinput::HID && (button->getAnalogType() == BAT_POSITIVE || button->getAnalogType() == BAT_NEGATIVE)) { int bat_threshold = button->getBatThreshold();