Skip to content

inputText callback segfault #45

@ewannemacher13

Description

@ewannemacher13

When using the callback data for an inputText, I get a segfault. Is there something I'm doing wrong, or is this an issue with zgui?

Reproduction on zig-gamedev main:

diff --git a/samples/gui_test_wgpu/src/gui_test_wgpu.zig b/samples/gui_test_wgpu/src/gui_test_wgpu.zig
index 58924f4a..02456774 100644
--- a/samples/gui_test_wgpu/src/gui_test_wgpu.zig
+++ b/samples/gui_test_wgpu/src/gui_test_wgpu.zig
@@ -503,7 +503,16 @@ fn update(demo: *DemoState) !void {
                 var v3u8: [3]u8 = .{ 0, 0, 0 };
             };
             zgui.separatorText("static input text");
-            _ = zgui.inputText("Input text", .{ .buf = static.input_text_buf[0..] });
+            _ = zgui.inputText("Input text", .{
+                .buf = static.input_text_buf[0..],
+                .flags = .{ .callback_edit = true },
+                .callback = struct {
+                    fn edit(data: *zgui.InputTextCallbackData) i32 {
+                        std.debug.print("buf_text_len: {d}\n", .{data.buf_text_len});
+                        return 0;
+                    }
+                }.edit,
+            });
             _ = zgui.text("length of Input text {}", .{std.mem.len(@as([*:0]u8, static.input_text_buf[0..]))});

             _ = zgui.inputTextMultiline("Input text multiline", .{ .buf = static.input_text_multiline_buf[0..] });

zig build run gui_test_wgpu-run
Type a character into the first static input text, and get a segfault

Segmentation fault at address 0x2a
zig-gamedev/samples/gui_test_wgpu/src/gui_test_wgpu.zig:511:70: 0x14b3e39 in edit (gui_test_wgpu)
                        std.debug.print("buf_text_len: {d}\n", .{data.buf_text_len});
                                                                     ^
.cache/zig/p/zgui-0.6.0-dev--L6sZC-1aADzgrip50BHiYDaCwSMC04XWK0epNlQD6Dt/libs/imgui/imgui_widgets.cpp:5124:13: 0x1d52ef4 in InputTextEx (.cache/zig/p/zgui-0.6.0-dev--L6sZC-1aADzgrip50BHiYDaCwSMC04XWK0epNlQD6Dt/libs/imgui/imgui_widgets.cpp)
            callback(&callback_data);
            ^
.cache/zig/p/zgui-0.6.0-dev--L6sZC-1aADzgrip50BHiYDaCwSMC04XWK0epNlQD6Dt/libs/imgui/imgui_widgets.cpp:3862:12: 0x1d54d1e in InputText (.cache/zig/p/zgui-0.6.0-dev--L6sZC-1aADzgrip50BHiYDaCwSMC04XWK0epNlQD6Dt/libs/imgui/imgui_widgets.cpp)
    return InputTextEx(label, NULL, buf, (int)buf_size, ImVec2(0, 0), flags, callback, user_data);
           ^
.cache/zig/p/zgui-0.6.0-dev--L6sZC-1aADzgrip50BHiYDaCwSMC04XWK0epNlQD6Dt/src/zgui.cpp:866:16: 0x1cb254a in zguiInputText (.cache/zig/p/zgui-0.6.0-dev--L6sZC-1aADzgrip50BHiYDaCwSMC04XWK0epNlQD6Dt/src/zgui.cpp)
        return ImGui::InputText(label, buf, buf_size, flags, callback, user_data);
               ^
.cache/zig/p/zgui-0.6.0-dev--L6sZC-1aADzgrip50BHiYDaCwSMC04XWK0epNlQD6Dt/src/gui.zig:2559:25: 0x14b3dfb in inputText (gui_test_wgpu)
    return zguiInputText(
                        ^
zig-gamedev/samples/gui_test_wgpu/src/gui_test_wgpu.zig:506:31: 0x14b1288 in update (gui_test_wgpu)
            _ = zgui.inputText("Input text", .{
                              ^
zig-gamedev/samples/gui_test_wgpu/src/gui_test_wgpu.zig:796:19: 0x14b5945 in main (gui_test_wgpu)
        try update(demo);
                  ^
zig/0.14.0/files/lib/std/start.zig:656:37: 0x14b63d7 in main (gui_test_wgpu)
            const result = root.main() catch |err| {
                                    ^
../sysdeps/nptl/libc_start_call_main.h:58:16: 0x76c3cc82a1c9 in __libc_start_call_main (../sysdeps/x86/libc-start.c)
../csu/libc-start.c:360:3: 0x76c3cc82a28a in __libc_start_main_impl (../sysdeps/x86/libc-start.c)
???:?:?: 0x13d5bd4 in ??? (???)
???:?:?: 0x0 in ??? (???)
gui_test_wgpu-run
└─ run gui_test_wgpu failure
error: the following command terminated unexpectedly:
zig-gamedev/zig-out/bin/gui_test_wgpu
Build Summary: 14/16 steps succeeded; 1 failed
gui_test_wgpu-run transitive failure
└─ run gui_test_wgpu failure
error: the following build command failed with exit code 1:
zig-gamedev/.zig-cache/o/3cde12cdd311d20a470adddfa5ac3696/build zig/0.14.0/files/zig zig/0.14.0/files/lib zig-gamedev zig-gamedev/.zig-cache .cache/zig --seed 0x2202d625 -Z084a7f95a9cb44b5 gui_test_wgpu-run

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions