From de795b3e103309210dac9e331d45aacf0f0d884c Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 24 Feb 2021 18:02:49 +0100 Subject: Fix config.xml corruption when it contains multi-byte UTF8 characters. --- src/lib/config.cc | 2 +- src/lib/dcp_video.cc | 2 +- src/lib/encode_server.cc | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/lib/config.cc b/src/lib/config.cc index d38256673..cc9bd6ffd 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -984,7 +984,7 @@ Config::write_config () const if (!f) { throw FileError (_("Could not open file for writing"), tmp); } - checked_fwrite (s.c_str(), s.length(), f, tmp); + checked_fwrite (s.c_str(), s.bytes(), f, tmp); fclose (f); boost::filesystem::remove (config_file()); boost::filesystem::rename (tmp, config_file()); diff --git a/src/lib/dcp_video.cc b/src/lib/dcp_video.cc index 153f4997e..ed68299bb 100644 --- a/src/lib/dcp_video.cc +++ b/src/lib/dcp_video.cc @@ -226,7 +226,7 @@ DCPVideo::encode_remotely (EncodeServerDescription serv, int timeout) /* Send XML metadata */ auto xml = doc.write_to_string ("UTF-8"); socket->write (xml.length() + 1); - socket->write ((uint8_t *) xml.c_str(), xml.length() + 1); + socket->write ((uint8_t *) xml.c_str(), xml.bytes() + 1); /* Send binary data */ LOG_TIMING("start-remote-send thread=%1", thread_id ()); diff --git a/src/lib/encode_server.cc b/src/lib/encode_server.cc index 92589c573..891b8caac 100644 --- a/src/lib/encode_server.cc +++ b/src/lib/encode_server.cc @@ -295,8 +295,8 @@ EncodeServer::broadcast_received () try { auto socket = make_shared(); socket->connect (boost::asio::ip::tcp::endpoint (_broadcast.send_endpoint.address(), MAIN_SERVER_PRESENCE_PORT)); - socket->write (xml.length() + 1); - socket->write ((uint8_t *) xml.c_str(), xml.length() + 1); + socket->write (xml.bytes() + 1); + socket->write ((uint8_t *) xml.c_str(), xml.bytes() + 1); } catch (...) { } @@ -304,8 +304,8 @@ EncodeServer::broadcast_received () try { auto socket = make_shared(); socket->connect (boost::asio::ip::tcp::endpoint (_broadcast.send_endpoint.address(), BATCH_SERVER_PRESENCE_PORT)); - socket->write (xml.length() + 1); - socket->write ((uint8_t *) xml.c_str(), xml.length() + 1); + socket->write (xml.bytes() + 1); + socket->write ((uint8_t *) xml.c_str(), xml.bytes() + 1); } catch (...) { } -- cgit v1.2.3