diff options
| -rw-r--r-- | src/driver/jit.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/driver/jit.rs b/src/driver/jit.rs index b27ad7b4384..129e36f170a 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::<Vec<_>>(); - let argv = args.iter().map(|arg| arg.as_ptr()).collect::<Vec<_>>(); - // 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::<Vec<_>>(); + + // 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()); |
