From 2a14fb7bf2b107aab0e712b35291514bfbd29a6d Mon Sep 17 00:00:00 2001 From: CohenArthur Date: Sat, 22 Aug 2020 11:24:02 +0200 Subject: [PATCH] jit: Add `NULL` as terminating argv --- src/driver/jit.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/driver/jit.rs b/src/driver/jit.rs index b27ad7b43847..129e36f170ac 100644 --- a/src/driver/jit.rs +++ b/src/driver/jit.rs @@ -82,8 +82,11 @@ pub(super) fn run_jit(tcx: TyCtxt<'_>) -> ! { .chain(args.split(" ")) .map(|arg| CString::new(arg).unwrap()) .collect::>(); - let argv = args.iter().map(|arg| arg.as_ptr()).collect::>(); - // TODO: Rust doesn't care, but POSIX argv has a NULL sentinel at the end + let mut argv = args.iter().map(|arg| arg.as_ptr()).collect::>(); + + // Push a null pointer as a terminating argument. This is required by POSIX and + // useful as some dynamic linkers use it as a marker to jump over. + argv.push(std::ptr::null()); let ret = f(args.len() as c_int, argv.as_ptr());