Imported Upstream version 1.57.0
[platform/upstream/boost.git] / boost / format / internals.hpp
index b0d874a..1c67006 100644 (file)
@@ -104,6 +104,15 @@ namespace detail {
     template<class Ch, class Tr>
     void stream_format_state<Ch,Tr>:: apply_on (basic_ios & os,
                       boost::io::detail::locale_t * loc_default) const {
+    // If a locale is available, set it first. "os.fill(fill_);" may chrash otherwise. 
+#if !defined(BOOST_NO_STD_LOCALE)
+        if(loc_)
+            os.imbue(loc_.get());
+        else if(loc_default)
+            os.imbue(*loc_default);
+#else
+        (void) loc_default; // keep compiler quiet if we don't support locales
+#endif        
         // set the state of this stream according to our params
         if(width_ != -1)
             os.width(width_);
@@ -114,14 +123,6 @@ namespace detail {
         os.flags(flags_);
         os.clear(rdstate_);
         os.exceptions(exceptions_);
-#if !defined(BOOST_NO_STD_LOCALE)
-        if(loc_)
-            os.imbue(loc_.get());
-        else if(loc_default)
-            os.imbue(*loc_default);
-#else
-        (void) loc_default; // keep compiler quiet if we don't support locales
-#endif        
     }
 
     template<class Ch, class Tr>