Fix quotes on Windows.

Boost process wchar_t conversion chokes if it's fed an empty string.
This would happen when the user had no alphavantage key. Separate
the process invocation to not present the empty value to boost process.
This commit is contained in:
John Ralls 2023-03-19 10:28:30 -07:00
parent 90e1e2d1c3
commit 576fc9b52c

View File

@ -211,14 +211,23 @@ GncFQQuoteSource::run_cmd (const StrVec& args, const std::string& json_string) c
boost::asio::io_service svc;
auto input_buf = bp::buffer (json_string);
bp::child process (c_cmd, args,
bp::std_out > out_buf,
bp::std_err > err_buf,
bp::std_in < input_buf,
bp::env["ALPHAVANTAGE_API_KEY"]= (m_api_key.empty() ? "" : m_api_key),
svc);
svc.run();
process.wait();
bp::child process;
if (m_api_key.empty())
process = bp::child(c_cmd, args,
bp::std_out > out_buf,
bp::std_err > err_buf,
bp::std_in < input_buf,
svc);
else
process = bp::child(c_cmd, args,
bp::std_out > out_buf,
bp::std_err > err_buf,
bp::std_in < input_buf,
bp::env["ALPHAVANTAGE_API_KEY"] = m_api_key,
svc);
svc.run();
process.wait();
{
auto raw = out_buf.get();