From f5ee78595a49035a708fa73c4988988bcf4c0ce4 Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 17 Feb 2016 16:26:13 +0000 Subject: [PATCH] Added a workaround for a problem in MSVC when using large years in Time::formatted --- modules/juce_core/time/juce_Time.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/modules/juce_core/time/juce_Time.cpp b/modules/juce_core/time/juce_Time.cpp index efd9f3b3a9..c0fd5e3ae1 100644 --- a/modules/juce_core/time/juce_Time.cpp +++ b/modules/juce_core/time/juce_Time.cpp @@ -136,17 +136,23 @@ namespace TimeHelpers typedef CharPointer_UTF32 StringType; #endif + #ifdef JUCE_MSVC + if (tm->tm_year < -1900 || tm->tm_year > 8099) + return String(); // Visual Studio's library can only handle 0 -> 9999 AD + #endif + for (size_t bufferSize = 256; ; bufferSize += 256) { HeapBlock buffer (bufferSize); - #if JUCE_ANDROID - const size_t numChars = strftime (buffer, bufferSize - 1, format.toUTF8(), tm); - #elif JUCE_WINDOWS - const size_t numChars = wcsftime (buffer, bufferSize - 1, format.toWideCharPointer(), tm); - #else - const size_t numChars = wcsftime (buffer, bufferSize - 1, format.toUTF32(), tm); - #endif + const size_t numChars = + #if JUCE_ANDROID + strftime (buffer, bufferSize - 1, format.toUTF8(), tm); + #elif JUCE_WINDOWS + wcsftime (buffer, bufferSize - 1, format.toWideCharPointer(), tm); + #else + wcsftime (buffer, bufferSize - 1, format.toUTF32(), tm); + #endif if (numChars > 0 || format.isEmpty()) return String (StringType (buffer),