More uses of LocaleGuard; hence speculative fix for servers crashing on lexical_cast.
authorCarl Hetherington <cth@carlh.net>
Sun, 17 Nov 2013 00:56:28 +0000 (00:56 +0000)
committerCarl Hetherington <cth@carlh.net>
Sun, 17 Nov 2013 00:56:28 +0000 (00:56 +0000)
ChangeLog
src/lib/audio_content.cc
src/lib/colour_conversion.cc
src/lib/sndfile_content.cc
src/lib/subtitle_content.cc

index 6157e278373c31afefd9fcbb0b77488192258a41..1d14c3822a60970fc91efc0d33d5ccbc5d9aeaf7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-11-17  Carl Hetherington  <cth@carlh.net>
+
+       * Speculative fix for servers crashing with different
+       locales to clients.
+
 2013-11-16  Carl Hetherington  <cth@carlh.net>
 
        * Bump bundled FFmpeg version to current git master.
index 100264d440f9bcd5d4fb05fc13553532f686a806..e0eaacb919137f74a89756f61714da9d38eaf0f4 100644 (file)
@@ -54,6 +54,8 @@ AudioContent::AudioContent (shared_ptr<const Film> f, boost::filesystem::path p)
 AudioContent::AudioContent (shared_ptr<const Film> f, shared_ptr<const cxml::Node> node)
        : Content (f, node)
 {
+       LocaleGuard lg;
+       
        _audio_gain = node->number_child<float> ("AudioGain");
        _audio_delay = node->number_child<int> ("AudioDelay");
 }
@@ -61,6 +63,8 @@ AudioContent::AudioContent (shared_ptr<const Film> f, shared_ptr<const cxml::Nod
 void
 AudioContent::as_xml (xmlpp::Node* node) const
 {
+       LocaleGuard lg;
+       
        boost::mutex::scoped_lock lm (_mutex);
        node->add_child("AudioGain")->add_child_text (lexical_cast<string> (_audio_gain));
        node->add_child("AudioDelay")->add_child_text (lexical_cast<string> (_audio_delay));
index ceb302971aef88f4c9654ea9d390eed473df1aef..95d267a8c9e26afa3443eac4250a7ffe4dff489b 100644 (file)
@@ -64,6 +64,8 @@ ColourConversion::ColourConversion (double i, bool il, double const m[3][3], dou
 ColourConversion::ColourConversion (shared_ptr<cxml::Node> node)
        : matrix (3, 3)
 {
+       LocaleGuard lg;
+       
        input_gamma = node->number_child<double> ("InputGamma");
        input_gamma_linearised = node->bool_child ("InputGammaLinearised");
 
@@ -86,6 +88,8 @@ ColourConversion::ColourConversion (shared_ptr<cxml::Node> node)
 void
 ColourConversion::as_xml (xmlpp::Node* node) const
 {
+       LocaleGuard lg;
+       
        node->add_child("InputGamma")->add_child_text (lexical_cast<string> (input_gamma));
        node->add_child("InputGammaLinearised")->add_child_text (input_gamma_linearised ? "1" : "0");
 
index d57cf04e3413b4b81baa97752c4ea0987ac881a3..31c1b4698da19ce3d83cf4ae0b6d052b61ea984f 100644 (file)
@@ -23,6 +23,7 @@
 #include "film.h"
 #include "compose.hpp"
 #include "job.h"
+#include "util.h"
 
 #include "i18n.h"
 
index 9fefbbfcda7258c5ff66ec01d80658bf46761bfd..1194e2dc950b99531185544b162ea5b2eae9b907 100644 (file)
@@ -19,6 +19,7 @@
 
 #include <libcxml/cxml.h>
 #include "subtitle_content.h"
+#include "util.h"
 
 using std::string;
 using boost::shared_ptr;
@@ -40,6 +41,8 @@ SubtitleContent::SubtitleContent (shared_ptr<const Film> f, shared_ptr<const cxm
        , _subtitle_offset (0)
        , _subtitle_scale (1)
 {
+       LocaleGuard lg;
+       
        _subtitle_offset = node->number_child<float> ("SubtitleOffset");
        _subtitle_scale = node->number_child<float> ("SubtitleScale");
 }
@@ -47,6 +50,8 @@ SubtitleContent::SubtitleContent (shared_ptr<const Film> f, shared_ptr<const cxm
 void
 SubtitleContent::as_xml (xmlpp::Node* root) const
 {
+       LocaleGuard lg;
+       
        root->add_child("SubtitleOffset")->add_child_text (lexical_cast<string> (_subtitle_offset));
        root->add_child("SubtitleScale")->add_child_text (lexical_cast<string> (_subtitle_scale));
 }