summaryrefslogtreecommitdiff
path: root/boost/format/internals.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/format/internals.hpp')
-rw-r--r--boost/format/internals.hpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/boost/format/internals.hpp b/boost/format/internals.hpp
index b0d874a1fb..1c67006aee 100644
--- a/boost/format/internals.hpp
+++ b/boost/format/internals.hpp
@@ -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>