Popen::execute_process() copied the command line into a buffer from new[], but did not delete it. This leaked memory each time a process started on Windows.
CreateProcessA needs a writable command line buffer. Since C++17, std::string::data() supplies one, so give the std::string buffer directly and remove the copy.
This only affects Windows. It is only reachable if -signer=<cmd> is set, through authenticated RPC or the GUI. Each call leaks only the startup-defined <cmd>, and the rate is limited by process spawn time, so the impact is limited.
edit: this was fixed upstream in https://github.com/arun11299/cpp-subprocess/pull/131, but since this codebase is C++20 it seems better to avoid the copy (and the const cast). A direct backport isn't possible anyway, since #35704 switched us to CreateProcessA.