From 3dfe45a33e11eacc61a5dddd702e7652c8c03230 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Thu, 23 Apr 2026 17:59:30 +0300 Subject: [PATCH] cgen: fix Shared objects make function parameters shared (fixes #11957) --- .../shared_call_arg_struct_init.c.must_have | 1 + .../c/testdata/shared_call_arg_struct_init.vv | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 vlib/v/gen/c/testdata/shared_call_arg_struct_init.c.must_have create mode 100644 vlib/v/gen/c/testdata/shared_call_arg_struct_init.vv diff --git a/vlib/v/gen/c/testdata/shared_call_arg_struct_init.c.must_have b/vlib/v/gen/c/testdata/shared_call_arg_struct_init.c.must_have new file mode 100644 index 000000000..81547c819 --- /dev/null +++ b/vlib/v/gen/c/testdata/shared_call_arg_struct_init.c.must_have @@ -0,0 +1 @@ +main__make_obj(((main__Options){.a = 1,}))}, sizeof(__shared__main__Obj)) diff --git a/vlib/v/gen/c/testdata/shared_call_arg_struct_init.vv b/vlib/v/gen/c/testdata/shared_call_arg_struct_init.vv new file mode 100644 index 000000000..6a8e14956 --- /dev/null +++ b/vlib/v/gen/c/testdata/shared_call_arg_struct_init.vv @@ -0,0 +1,22 @@ +struct Options { + a int +} + +struct Obj { + a int +} + +fn make_obj(options Options) Obj { + return Obj{ + a: options.a + } +} + +fn main() { + shared obj := make_obj(Options{ + a: 1 + }) + rlock obj { + assert obj.a == 1 + } +} -- 2.39.5