X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8a8c41dd9315f3ed4aa287bd439bdd0a2c650458..5c250a10332dc17263c66deb629b5fa8c4320f8a:/src/msw/registry.cpp diff --git a/src/msw/registry.cpp b/src/msw/registry.cpp index caf1a31d15..26657e9c5d 100644 --- a/src/msw/registry.cpp +++ b/src/msw/registry.cpp @@ -12,7 +12,7 @@ // - add high level functions (RegisterOleServer, ...) /////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "registry.h" #endif @@ -36,7 +36,7 @@ #define WIN32_LEAN_AND_MEAN */ -#include +#include "wx/msw/wrapwin.h" #ifdef __WXWINCE__ #include "wx/msw/private.h" @@ -94,7 +94,7 @@ aStdKeys[] = // useful for Windows programmers: makes somewhat more clear all these zeroes // being passed to Windows APIs -#define RESERVED (NULL) +#define RESERVED (0) // ---------------------------------------------------------------------------- // macros @@ -683,7 +683,9 @@ bool wxRegKey::DeleteSelf() Close(); m_dwLastError = RegDeleteKey((HKEY) m_hRootKey, m_strKey); - if ( m_dwLastError != ERROR_SUCCESS ) { + // deleting a key which doesn't exist is not considered an error + if ( m_dwLastError != ERROR_SUCCESS && + m_dwLastError != ERROR_FILE_NOT_FOUND ) { wxLogSysError(m_dwLastError, _("Can't delete key '%s'"), GetName().c_str()); return FALSE; @@ -872,14 +874,12 @@ bool wxRegKey::QueryValue(const wxChar *szValue, strValue.Empty(); } else { - RegString pBuf = (RegString)strValue.GetWriteBuf(dwSize); m_dwLastError = RegQueryValueEx((HKEY) m_hKey, WXSTRINGCAST szValue, RESERVED, &dwType, - pBuf, + (RegString)(wxChar*)wxStringBuffer(strValue, dwSize), &dwSize); - strValue.UngetWriteBuf(); // expand the var expansions in the string unless disabled #ifndef __WXWINCE__ @@ -893,10 +893,9 @@ bool wxRegKey::QueryValue(const wxChar *szValue, ok = ::ExpandEnvironmentStrings ( strValue, - strExpValue.GetWriteBuf(dwExpSize), + wxStringBuffer(strExpValue, dwExpSize), dwExpSize ) != 0; - strExpValue.UngetWriteBuf(); strValue = strExpValue; }