}
}
+void wxConfigPathChanger::UpdateIfDeleted()
+{
+ // we don't have to do anything at all if we didn't change the path
+ if ( !m_bChanged )
+ return;
+
+ // find the deepest still existing parent path of the original path
+ while ( !m_pContainer->HasGroup(m_strOldPath) )
+ {
+ m_strOldPath = m_strOldPath.BeforeLast(wxCONFIG_PATH_SEPARATOR);
+ if ( m_strOldPath.empty() )
+ m_strOldPath = wxCONFIG_PATH_SEPARATOR;
+ }
+}
+
wxConfigPathChanger::~wxConfigPathChanger()
{
// only restore path if it was changed
#ifdef __WXWINCE__
const wxChar *pszValue = NULL;
#else
- const wxChar *pszValue = wxGetenv(strVarName);
+ // NB: use wxGetEnv instead of wxGetenv as otherwise variables
+ // set through wxSetEnv may not be read correctly!
+ const wxChar *pszValue = NULL;
+ wxString tmp;
+ if (wxGetEnv(strVarName, &tmp))
+ pszValue = tmp;
#endif
if ( pszValue != NULL ) {
strResult += pszValue;