X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/43b282bd095529e69f0bf7e7bd44888e4867257e..af7e24c33e1e6e00a7687ee965b921dbe60cdb36:/src/common/strvararg.cpp?ds=sidebyside diff --git a/src/common/strvararg.cpp b/src/common/strvararg.cpp index e89bdf35b5..09b8ca0b98 100644 --- a/src/common/strvararg.cpp +++ b/src/common/strvararg.cpp @@ -152,30 +152,30 @@ 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; while ( *format ) { - if ( CopyFmtChar(*format++) == _T('%') ) + if ( CopyFmtChar(*format++) == wxT('%') ) { // skip any flags while ( IsFlagChar(*format) ) CopyFmtChar(*format++); // and possible width - if ( *format == _T('*') ) + if ( *format == wxT('*') ) CopyFmtChar(*format++); else SkipDigits(&format); // precision? - if ( *format == _T('.') ) + if ( *format == wxT('.') ) { CopyFmtChar(*format++); - if ( *format == _T('*') ) + if ( *format == wxT('*') ) CopyFmtChar(*format++); else SkipDigits(&format); @@ -211,16 +211,16 @@ public: // and finally we should have the type switch ( *format ) { - case _T('S'): - case _T('s'): + case wxT('S'): + case wxT('s'): // all strings were converted into the same form by // wxArgNormalizer, this form depends on the context // in which the value is used (scanf/printf/wprintf): HandleString(*format, size, outConv, outSize); break; - case _T('C'): - case _T('c'): + case wxT('C'): + case wxT('c'): HandleChar(*format, size, outConv, outSize); break; @@ -240,11 +240,11 @@ public: switch ( outSize ) { case Size_Long: - InsertFmtChar(_T('l')); + InsertFmtChar(wxT('l')); break; case Size_Short: - InsertFmtChar(_T('h')); + InsertFmtChar(wxT('h')); break; case Size_Default: @@ -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; } } @@ -351,13 +353,13 @@ private: static bool IsFlagChar(CharType ch) { - return ch == _T('-') || ch == _T('+') || - ch == _T('0') || ch == _T(' ') || ch == _T('#'); + return ch == wxT('-') || ch == wxT('+') || + ch == wxT('0') || ch == wxT(' ') || ch == wxT('#'); } void SkipDigits(const CharType **ptpc) { - while ( **ptpc >= _T('0') && **ptpc <= _T('9') ) + while ( **ptpc >= wxT('0') && **ptpc <= wxT('9') ) CopyFmtChar(*(*ptpc)++); }