X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e68a8744eeba2381e6cfb3ba8a124f94a5978589..c437b3f4e47b74715a2f2385d4862972babd7802:/src/common/strvararg.cpp diff --git a/src/common/strvararg.cpp b/src/common/strvararg.cpp index a10cdc26dd..e71c060b10 100644 --- a/src/common/strvararg.cpp +++ b/src/common/strvararg.cpp @@ -152,7 +152,7 @@ public: m_nCopied = 0; } - wxCharTypeBuffer Convert(const CharType *format) + wxScopedCharTypeBuffer Convert(const CharType *format) { // this is reset to NULL if we modify the format string m_fmtOrig = format; @@ -263,12 +263,14 @@ public: // format if ( m_fmtOrig ) { - return wxCharTypeBuffer::CreateNonOwned(m_fmtOrig); + return wxScopedCharTypeBuffer::CreateNonOwned(m_fmtOrig); } else { - // NULL-terminate converted format string: - *m_fmtLast = 0; + // shrink converted format string to actual size (instead of + // over-sized allocation from CopyAllBefore()) and NUL-terminate + // it: + m_fmt.shrink(m_fmtLast - m_fmt.data()); return m_fmt; } } @@ -373,9 +375,7 @@ private: size_t m_nCopied; }; - - -#ifdef __WINDOWS +#ifdef __WINDOWS__ // on Windows, we should use %s and %c regardless of the build: class wxPrintfFormatConverterWchar : public wxFormatConverterBase @@ -520,7 +520,7 @@ class wxScanfFormatConverterWchar : public wxFormatConverterBase } }; -const wxWCharBuffer wxScanfConvertFormatW(const wchar_t *format) +const wxScopedWCharBuffer wxScanfConvertFormatW(const wchar_t *format) { return wxScanfFormatConverterWchar().Convert(format); }