Skip to content

Commit c1e37c4

Browse files
PatrickHaeckerPatrick Häcker
andauthored
Initialize global Base.PROGRAM_FILE correctly (#1068)
Co-authored-by: Patrick Häcker <[email protected]>
1 parent a9af8ed commit c1e37c4

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

src/embedding_wrapper.c

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -140,25 +140,28 @@ int main(int argc, char *argv[]) {
140140

141141
// Update ARGS and PROGRAM_FILE
142142
checked_eval_string("append!(empty!(Base.ARGS), Core.ARGS)");
143+
144+
#if JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 12
145+
checked_eval_string("Core.eval(Base, :(global PROGRAM_FILE))");
146+
checked_eval_string("Base.PROGRAM_FILE = popfirst!(ARGS)");
147+
#else
143148
jl_value_t *firstarg = checked_eval_string("popfirst!(ARGS)");
144149
JL_GC_PUSH1(&firstarg);
145150
jl_sym_t *var = jl_symbol("PROGRAM_FILE");
146-
#if JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 12
147-
jl_binding_t *bp = jl_get_binding_wr(jl_base_module, var);
148-
jl_checked_assignment(bp, jl_base_module, var, firstarg);
149-
#elif JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 11
150-
jl_binding_t *bp = jl_get_binding_wr(jl_base_module, var, /* alloc */ 1);
151-
jl_checked_assignment(bp, jl_base_module, var, firstarg);
152-
#elif JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 10
153-
jl_binding_t *bp = jl_get_binding_wr(jl_base_module, var);
154-
jl_checked_assignment(bp, jl_base_module, var, firstarg);
155-
#elif JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 9
156-
jl_binding_t *bp = jl_get_binding_wr(jl_base_module, var, 1);
157-
jl_checked_assignment(bp, firstarg);
158-
#else
159-
jl_set_global(jl_base_module, jl_symbol("PROGRAM_FILE"), firstarg);
160-
#endif
151+
#if JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 11
152+
jl_binding_t *bp = jl_get_binding_wr(jl_base_module, var, /* alloc */ 1);
153+
jl_checked_assignment(bp, jl_base_module, var, firstarg);
154+
#elif JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 10
155+
jl_binding_t *bp = jl_get_binding_wr(jl_base_module, var);
156+
jl_checked_assignment(bp, jl_base_module, var, firstarg);
157+
#elif JULIA_VERSION_MAJOR == 1 && JULIA_VERSION_MINOR >= 9
158+
jl_binding_t *bp = jl_get_binding_wr(jl_base_module, var, 1);
159+
jl_checked_assignment(bp, firstarg);
160+
#else
161+
jl_set_global(jl_base_module, jl_symbol("PROGRAM_FILE"), firstarg);
162+
#endif
161163
JL_GC_POP();
164+
#endif
162165

163166
// call the work function, and get back a value
164167
jl_value_t *jl_retcode = checked_eval_string(JULIA_MAIN "()");

0 commit comments

Comments
 (0)