-int wxString::PrintfV(const wxChar* pszFormat, va_list argptr)
-{
-  // static buffer to avoid dynamic memory allocation each time
-  char s_szScratch[1024]; // using static buffer causes internal compiler err
-#if 0
-#if wxUSE_THREADS
-  // protect the static buffer
-  static wxCriticalSection critsect;
-  wxCriticalSectionLocker lock(critsect);
-#endif
-#endif
-
-#if wxUSE_EXPERIMENTAL_PRINTF
-// the new implementation
-
-  Reinit();
-  for (size_t n = 0; pszFormat[n]; n++)
-    if (pszFormat[n] == _T('%')) {
-      static char s_szFlags[256] = "%";
-      size_t flagofs = 1;
-      bool adj_left = FALSE, in_prec = FALSE,
-           prec_dot = FALSE, done = FALSE;
-      int ilen = 0;
-      size_t min_width = 0, max_width = wxSTRING_MAXLEN;
-      do {
-#define CHECK_PREC if (in_prec && !prec_dot) { s_szFlags[flagofs++] = '.'; prec_dot = TRUE; }
-        switch (pszFormat[++n]) {
-        case _T('\0'):
-          done = TRUE;
-          break;
-        case _T('%'):
-          *this += _T('%');
-          done = TRUE;
-          break;
-        case _T('#'):
-        case _T('0'):
-        case _T(' '):
-        case _T('+'):
-        case _T('\''):
-          CHECK_PREC
-          s_szFlags[flagofs++] = pszFormat[n];
-          break;
-        case _T('-'):
-          CHECK_PREC
-          adj_left = TRUE;
-          s_szFlags[flagofs++] = pszFormat[n];
-          break;
-        case _T('.'):
-          CHECK_PREC
-          in_prec = TRUE;
-          prec_dot = FALSE;
-          max_width = 0;
-          // dot will be auto-added to s_szFlags if non-negative number follows
-          break;
-        case _T('h'):
-          ilen = -1;
-          CHECK_PREC
-          s_szFlags[flagofs++] = pszFormat[n];
-          break;
-        case _T('l'):
-          ilen = 1;
-          CHECK_PREC
-          s_szFlags[flagofs++] = pszFormat[n];
-          break;
-        case _T('q'):
-        case _T('L'):
-          ilen = 2;
-          CHECK_PREC
-          s_szFlags[flagofs++] = pszFormat[n];
-          break;
-        case _T('Z'):
-          ilen = 3;
-          CHECK_PREC
-          s_szFlags[flagofs++] = pszFormat[n];
-          break;
-        case _T('*'):
-          {
-            int len = va_arg(argptr, int);
-            if (in_prec) {
-              if (len<0) break;
-              CHECK_PREC
-              max_width = len;
-            } else {
-              if (len<0) {
-                adj_left = !adj_left;
-                s_szFlags[flagofs++] = '-';
-                len = -len;
-              }
-              min_width = len;
-            }
-            flagofs += ::sprintf(s_szFlags+flagofs,"%d",len);
-          }
-          break;
-        case _T('1'): case _T('2'): case _T('3'):
-        case _T('4'): case _T('5'): case _T('6'):
-        case _T('7'): case _T('8'): case _T('9'):
-          {
-            int len = 0;
-            CHECK_PREC
-            while ((pszFormat[n]>=_T('0')) && (pszFormat[n]<=_T('9'))) {
-              s_szFlags[flagofs++] = pszFormat[n];
-              len = len*10 + (pszFormat[n] - _T('0'));
-              n++;
-            }
-            if (in_prec) max_width = len;
-            else min_width = len;
-            n--; // the main loop pre-increments n again
-          }
-          break;
-        case _T('d'):
-        case _T('i'):
-        case _T('o'):
-        case _T('u'):
-        case _T('x'):
-        case _T('X'):
-          CHECK_PREC
-          s_szFlags[flagofs++] = pszFormat[n];
-          s_szFlags[flagofs] = '\0';
-          if (ilen == 0 ) {
-            int val = va_arg(argptr, int);
-            ::sprintf(s_szScratch, s_szFlags, val);
-          }
-          else if (ilen == -1) {
-            short int val = va_arg(argptr, short int);
-            ::sprintf(s_szScratch, s_szFlags, val);
-          }
-          else if (ilen == 1) {
-            long int val = va_arg(argptr, long int);
-            ::sprintf(s_szScratch, s_szFlags, val);
-          }
-          else if (ilen == 2) {
-#if SIZEOF_LONG_LONG
-            long long int val = va_arg(argptr, long long int);
-            ::sprintf(s_szScratch, s_szFlags, val);
-#else
-            long int val = va_arg(argptr, long int);
-            ::sprintf(s_szScratch, s_szFlags, val);
-#endif
-          }
-          else if (ilen == 3) {
-            size_t val = va_arg(argptr, size_t);
-            ::sprintf(s_szScratch, s_szFlags, val);
-          }
-          *this += wxString(s_szScratch);
-          done = TRUE;
-          break;
-        case _T('e'):
-        case _T('E'):
-        case _T('f'):
-        case _T('g'):
-        case _T('G'):
-          CHECK_PREC
-          s_szFlags[flagofs++] = pszFormat[n];
-          s_szFlags[flagofs] = '\0';
-          if (ilen == 2) {
-            long double val = va_arg(argptr, long double);
-            ::sprintf(s_szScratch, s_szFlags, val);
-          } else {
-            double val = va_arg(argptr, double);
-            ::sprintf(s_szScratch, s_szFlags, val);
-          }
-          *this += wxString(s_szScratch);
-          done = TRUE;
-          break;
-        case _T('p'):
-          {
-            void *val = va_arg(argptr, void *);
-            CHECK_PREC
-            s_szFlags[flagofs++] = pszFormat[n];
-            s_szFlags[flagofs] = '\0';
-            ::sprintf(s_szScratch, s_szFlags, val);
-            *this += wxString(s_szScratch);
-            done = TRUE;
-          }
-          break;
-        case _T('c'):
-          {
-            wxChar val = va_arg(argptr, int);
-            // we don't need to honor padding here, do we?
-            *this += val;
-            done = TRUE;
-          }
-          break;
-        case _T('s'):
-          if (ilen == -1) {
-            // wx extension: we'll let %hs mean non-Unicode strings
-            char *val = va_arg(argptr, char *);