update ooo310-m15
[ooovba.git] / applied_patches / 0624-speed-store-lck.diff
blobffaa955e39e9bb926e247eb40b6dade01b400657
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
4 @@ -332,6 +332,8 @@
5 */
6 bool isValid (void) const { return (m_hFile != 0); }
8 + bool isWriteable() { return m_bWriteable; }
10 /** Operation.
12 storeError close (void);
13 @@ -630,9 +632,16 @@
14 rnDone = 0;
16 // Acquire exclusive access.
17 - osl::MutexGuard aGuard (m_aMutex);
18 if (m_pImpl->isValid())
19 - return m_pImpl->readAt (nOffset, pBuffer, nBytes, rnDone);
20 + {
21 + bool bLock = m_pImpl->isWriteable();
22 + if (bLock)
23 + m_aMutex.acquire();
24 + storeError nErr = m_pImpl->readAt (nOffset, pBuffer, nBytes, rnDone);
25 + if (bLock)
26 + m_aMutex.release();
27 + return nErr;
28 + }
29 else
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);
43 // Check precond.
44 if (!m_xLockBytes.is())
45 return store_E_InvalidAccess;
47 + bool bLock = m_bWriteable;
48 + if (bLock) // Acquire exclusive access.
49 + m_aMutex.acquire();
51 // Save PageDescriptor.
52 OStorePageData &rData = rPage.getData();
53 OStorePageDescriptor aDescr (rData.PageHeader ().m_aDescr);
54 @@ -1771,7 +1772,7 @@
56 // Restore PageDescriptor.
57 rData.PageHeader ().m_aDescr = aDescr;
58 - return eErrCode;
59 + goto err;
62 // Verify page.
63 @@ -1780,7 +1781,7 @@
65 // Restore PageDescriptor.
66 rData.PageHeader ().m_aDescr = aDescr;
67 - return eErrCode;
68 + goto err;
71 #ifdef OSL_BIGENDIAN
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;
77 + {
78 + eErrCode = store_E_InvalidAccess;
79 + goto err;
80 + }
82 // Mark page as clean.
83 rPage.clean();
85 // Done.
86 - return store_E_None;
87 + eErrCode = store_E_None;
88 + err:
89 + if (bLock) // Release exclusive access.
90 + m_aMutex.release();
91 + return eErrCode;