]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed problem with non-const methods not working on wxRegKey initially opened in...
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 18 May 2005 23:29:54 +0000 (23:29 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 18 May 2005 23:29:54 +0000 (23:29 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34155 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/registry.h
src/msw/registry.cpp

index ec2fe0a8426e0ef0c624ae31510d1015131078d1..5f9020a7e75573f66c443084e422cf498f7743bf 100644 (file)
@@ -245,6 +245,7 @@ private:
               m_hRootKey;       // handle of the top key (i.e. StdKey)
   wxString    m_strKey;         // key name (relative to m_hRootKey)
 
+  AccessMode  m_mode;           // valid only if key is opened
   long        m_dwLastError;    // last error (0 if none)
 
 
index 70dd768c1248b6bd8605237def0d3163894fbcd7..3cf956f7d26c36d70c8ae4fd0114cf32898f0a67 100644 (file)
@@ -364,7 +364,13 @@ bool wxRegKey::GetKeyInfo(size_t *pnSubKeys,
 bool wxRegKey::Open(AccessMode mode)
 {
     if ( IsOpened() )
-        return true;
+    {
+        if ( mode <= m_mode )
+            return true;
+
+        // we had been opened in read mode but now must be reopened in write
+        Close();
+    }
 
     HKEY tmpKey;
     m_dwLastError = ::RegOpenKeyEx
@@ -384,6 +390,8 @@ bool wxRegKey::Open(AccessMode mode)
     }
 
     m_hKey = (WXHKEY) tmpKey;
+    m_mode = mode;
+
     return true;
 }