From 7157c29ea5249b2217048bb4acfcd3d1492efc24 Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Thu, 23 Dec 2021 23:29:21 +0100 Subject: [PATCH] Allow argc = 0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is allowed according to the C++ standard, so don’t invoke undefined behavior when converting argv[0] to a string. --- elisp/binary.template | 6 ++++-- emacs/driver.template | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/elisp/binary.template b/elisp/binary.template index 80078fd3..48ef800c 100644 --- a/elisp/binary.template +++ b/elisp/binary.template @@ -17,12 +17,14 @@ #include "elisp/binary.h" int PHST_RULES_ELISP_MAIN(int argc, phst_rules_elisp::NativeChar** argv) { - std::vector args = { + using phst_rules_elisp::NativeString; + using phst_rules_elisp::RunBinary; + std::vector args = { [[args]], PHST_RULES_ELISP_NATIVE_LITERAL("--") }; args.insert(args.end(), argv, argv + argc); - return phst_rules_elisp::RunBinary(argv[0], args); + return RunBinary(argc == 0 ? NativeString() : argv[0], args); } // Local Variables: diff --git a/emacs/driver.template b/emacs/driver.template index c91c26c3..c95ac0ac 100644 --- a/emacs/driver.template +++ b/emacs/driver.template @@ -17,12 +17,14 @@ #include "elisp/emacs.h" int PHST_RULES_ELISP_MAIN(int argc, phst_rules_elisp::NativeChar** argv) { - std::vector args = { + using phst_rules_elisp::NativeString; + using phst_rules_elisp::RunEmacs; + std::vector args = { [[args]], PHST_RULES_ELISP_NATIVE_LITERAL("--") }; args.insert(args.end(), argv, argv + argc); - return phst_rules_elisp::RunEmacs(argv[0], args); + return RunEmacs(argc == 0 ? NativeString() : argv[0], args); } // Local Variables: