fix support for using asterisks in the format string and some code cleanup
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60120 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -142,9 +142,16 @@ static int wxDoVsnprintf(CharType *buf, size_t lenMax,
|
||||
const CharType *toparse = format;
|
||||
for (i=0; i < parser.nargs; i++)
|
||||
{
|
||||
wxPrintfConvSpec<CharType>& spec = parser.specs[i];
|
||||
|
||||
// skip any asterisks, they're processed as part of the conversion they
|
||||
// apply to
|
||||
if ( spec.m_type == wxPAT_STAR )
|
||||
continue;
|
||||
|
||||
// copy in the output buffer the portion of the format string between
|
||||
// last specifier and the current one
|
||||
size_t tocopy = ( parser.arg[i].m_pArgPos - toparse );
|
||||
size_t tocopy = ( spec.m_pArgPos - toparse );
|
||||
|
||||
lenCur += wxCopyStrWithPercents(lenMax - lenCur, buf + lenCur,
|
||||
tocopy, toparse);
|
||||
@@ -155,8 +162,8 @@ static int wxDoVsnprintf(CharType *buf, size_t lenMax,
|
||||
}
|
||||
|
||||
// process this specifier directly in the output buffer
|
||||
int n = parser.arg[i].Process(buf+lenCur, lenMax - lenCur,
|
||||
&argdata[parser.arg[i].m_pos], lenCur);
|
||||
int n = spec.Process(buf+lenCur, lenMax - lenCur,
|
||||
&argdata[spec.m_pos], lenCur);
|
||||
if (n == -1)
|
||||
{
|
||||
buf[lenMax-1] = wxT('\0'); // be sure to always NUL-terminate the string
|
||||
@@ -166,7 +173,7 @@ static int wxDoVsnprintf(CharType *buf, size_t lenMax,
|
||||
|
||||
// the +1 is because wxPrintfConvSpec::m_pArgEnd points to the last character
|
||||
// of the format specifier, but we are not interested to it...
|
||||
toparse = parser.arg[i].m_pArgEnd + 1;
|
||||
toparse = spec.m_pArgEnd + 1;
|
||||
}
|
||||
|
||||
// copy portion of the format string after last specifier
|
||||
|
||||
Reference in New Issue
Block a user