X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/41d9940d5d959d94b16a56f1aea5d73d6ae310db..5f5183d34bbf704e3426673a080d19cf280d5a96:/src/common/wxchar.cpp diff --git a/src/common/wxchar.cpp b/src/common/wxchar.cpp index ce74d2bd61..7184706d32 100644 --- a/src/common/wxchar.cpp +++ b/src/common/wxchar.cpp @@ -5,7 +5,7 @@ // Modified by: Ron Lee // Created: 09/04/99 // RCS-ID: $Id$ -// Copyright: (c) wxWindows copyright +// Copyright: (c) wxWidgets copyright // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -704,7 +704,7 @@ int vwprintf(const wxChar *format, va_list argptr) So to use native functions in order to get our semantics we must do the following translations in Unicode mode (nothing to do in ANSI mode): - wxWindows specifier POSIX specifier + wxWidgets specifier POSIX specifier ---------------------------------------- %hc, %C, %hC %c @@ -962,9 +962,9 @@ int wxSprintf( wxChar *str, const wxChar *format, ... ) va_list argptr; va_start(argptr, format); - // note that wxString::Format() uses wxVsnprintf(), not wxSprintf(), so + // note that wxString::FormatV() uses wxVsnprintf(), not wxSprintf(), so // it's safe to implement this one in terms of it - wxString s(wxString::Format(format, argptr)); + wxString s(wxString::FormatV(format, argptr)); wxStrcpy(str, s); va_end(argptr); @@ -1329,36 +1329,16 @@ long WXDLLEXPORT wxAtol(const wxChar *psz) wxChar * WXDLLEXPORT wxGetenv(const wxChar *name) { - static wxHashTable env; - - // check if we already have stored the converted env var - wxObject *data = env.Get(name); - if (!data) - { - // nope, retrieve it, -#if wxUSE_UNICODE - wxCharBuffer buffer = wxConvLocal.cWX2MB(name); - // printf( "buffer %s\n", (const char*) buffer ); - const char *val = getenv( (const char *)buffer ); -#else - const char *val = getenv( name ); -#endif - - if (!val) return (wxChar *)NULL; - // printf( "home %s\n", val ); - - // convert it, #if wxUSE_UNICODE - data = (wxObject *)new wxString(val, wxConvLocal); + // NB: buffer returned by getenv() is allowed to be overwritten next + // time getenv() is called, so it is OK to use static string + // buffer to hold the data. + static wxWCharBuffer value((wxChar*)NULL); + value = wxConvLocal.cMB2WX(getenv(wxConvLocal.cWX2MB(name))); + return value.data(); #else - data = (wxObject *)new wxString(val); + return getenv(name); #endif - - // and store it - env.Put(name, data); - } - // return converted env var - return (wxChar *)((wxString *)data)->c_str(); } int WXDLLEXPORT wxSystem(const wxChar *psz)