From b1dc9c3a2f7e55c9afc5bf2d5b465371b048e14f Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 10 Aug 2016 16:38:33 +0100 Subject: Remove all use of stringstream in an attempt to fix the suspected thread-unsafe crash bugs on OS X. --- src/lib/util.cc | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) (limited to 'src/lib/util.cc') diff --git a/src/lib/util.cc b/src/lib/util.cc index 1cf71ba32..5e870f1e2 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -36,7 +36,6 @@ #include "digester.h" #include "audio_processor.h" #include "compose.hpp" -#include #include #include #include @@ -115,14 +114,9 @@ seconds_to_hms (int s) int h = m / 60; m -= (h * 60); - locked_stringstream hms; - hms << h << N_(":"); - hms.width (2); - hms << setfill ('0') << m << N_(":"); - hms.width (2); - hms << setfill ('0') << s; - - return hms.str (); + char buffer[64]; + snprintf (buffer, sizeof(buffer), "%d:%02d:%02d", h, m, s); + return buffer; } /** @param s Number of seconds. @@ -136,7 +130,7 @@ seconds_to_approximate_hms (int s) int h = m / 60; m -= (h * 60); - locked_stringstream ap; + string ap; bool const hours = h > 0; bool const minutes = h < 6 && m > 0; @@ -145,14 +139,14 @@ seconds_to_approximate_hms (int s) if (hours) { if (m > 30 && !minutes) { /// TRANSLATORS: h here is an abbreviation for hours - ap << (h + 1) << _("h"); + ap += raw_convert(h + 1) + _("h"); } else { /// TRANSLATORS: h here is an abbreviation for hours - ap << h << _("h"); + ap += raw_convert(h) + _("h"); } if (minutes || seconds) { - ap << N_(" "); + ap += N_(" "); } } @@ -160,24 +154,24 @@ seconds_to_approximate_hms (int s) /* Minutes */ if (s > 30 && !seconds) { /// TRANSLATORS: m here is an abbreviation for minutes - ap << (m + 1) << _("m"); + ap += raw_convert(m + 1) + _("m"); } else { /// TRANSLATORS: m here is an abbreviation for minutes - ap << m << _("m"); + ap += raw_convert(m) + _("m"); } if (seconds) { - ap << N_(" "); + ap += N_(" "); } } if (seconds) { /* Seconds */ /// TRANSLATORS: s here is an abbreviation for seconds - ap << s << _("s"); + ap += raw_convert(s) + _("s"); } - return ap.str (); + return ap; } double -- cgit v1.2.3