1 diff -u -r ../HEAD/build/src680-m211/store/source/filelckb.cxx store/source/filelckb.cxx
2 --- store/source/filelckb.cxx 2007-06-11 11:57:42.000000000 +0100
3 +++ store/source/filelckb.cxx 2007-06-15 11:43:34.000000000 +0100
6 bool isValid (void) const { return (m_hFile != 0); }
8 + bool isWriteable() { return m_bWriteable; }
12 storeError close (void);
16 // Acquire exclusive access.
17 - osl::MutexGuard aGuard (m_aMutex);
18 if (m_pImpl->isValid())
19 - return m_pImpl->readAt (nOffset, pBuffer, nBytes, rnDone);
21 + bool bLock = m_pImpl->isWriteable();
24 + storeError nErr = m_pImpl->readAt (nOffset, pBuffer, nBytes, rnDone);
30 return store_E_InvalidHandle;
32 Only in store/source: filelckb.cxx~
33 diff -u -r store/source/storbase.cxx store/source/storbase.cxx
34 --- store/source/storbase.cxx 2007-06-11 11:57:42.000000000 +0100
35 +++ store/source/storbase.cxx 2007-06-15 12:17:13.000000000 +0100
36 @@ -1754,13 +1754,14 @@
38 storeError OStorePageBIOS::load (OStorePageObject& rPage)
40 - // Acquire exclusive access.
41 - osl::MutexGuard aGuard (m_aMutex);
44 if (!m_xLockBytes.is())
45 return store_E_InvalidAccess;
47 + bool bLock = m_bWriteable;
48 + if (bLock) // Acquire exclusive access.
51 // Save PageDescriptor.
52 OStorePageData &rData = rPage.getData();
53 OStorePageDescriptor aDescr (rData.PageHeader ().m_aDescr);
56 // Restore PageDescriptor.
57 rData.PageHeader ().m_aDescr = aDescr;
65 // Restore PageDescriptor.
66 rData.PageHeader ().m_aDescr = aDescr;
72 @@ -1791,13 +1792,20 @@
73 // Verify PageDescriptor.
74 if (!((aDescr == rData.PageHeader ().m_aDescr) ||
75 (aDescr <= rData.PageHeader ().m_aDescr) ))
76 - return store_E_InvalidAccess;
78 + eErrCode = store_E_InvalidAccess;
82 // Mark page as clean.
86 - return store_E_None;
87 + eErrCode = store_E_None;
89 + if (bLock) // Release exclusive access.