mirror of
https://github.com/vlang/v.git
synced 2025-09-09 15:27:05 -04:00
v.gen.c: initialize closures in shared library mode (#20630)
This commit is contained in:
parent
9e8a159743
commit
8f10326b6f
@ -6191,6 +6191,9 @@ fn (mut g Gen) write_init_function() {
|
||||
}
|
||||
g.writeln('void _vinit_caller() {')
|
||||
g.writeln('\tstatic bool once = false; if (once) {return;} once = true;')
|
||||
if g.nr_closures > 0 {
|
||||
g.writeln('\t__closure_init(); // vinit_caller()')
|
||||
}
|
||||
g.writeln('\t_vinit(0,0);')
|
||||
g.writeln('}')
|
||||
|
||||
|
@ -98,7 +98,7 @@ fn (mut g Gen) gen_c_main_function_header() {
|
||||
g.writeln('\tg_main_argc = ___argc;')
|
||||
g.writeln('\tg_main_argv = ___argv;')
|
||||
if g.nr_closures > 0 {
|
||||
g.writeln('__closure_init();')
|
||||
g.writeln('\t__closure_init(); // main()')
|
||||
}
|
||||
}
|
||||
|
||||
|
2
vlib/v/gen/c/testdata/closure_shared_lib.c.must_have
vendored
Normal file
2
vlib/v/gen/c/testdata/closure_shared_lib.c.must_have
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
__closure_init(); // vinit_caller()
|
||||
__closure_init(); // main()
|
8
vlib/v/gen/c/testdata/closure_shared_lib.vv
vendored
Normal file
8
vlib/v/gen/c/testdata/closure_shared_lib.vv
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
// vtest vflags: -shared
|
||||
@[export: 'foo']
|
||||
fn show_foo(s &char) {
|
||||
my_fn := fn [s] () {
|
||||
_ = s
|
||||
}
|
||||
my_fn()
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user