Juan Lang
776ee9ee81
ole32: Fix a memory leak.
2009-12-18 11:39:08 +01:00
Vincent Povirk
393c5af205
ole32: Add a cache for block chain streams in StorageImpl.
2009-12-16 12:24:27 +01:00
Huw Davies
c6d4df8b1c
ole32: Fix several memory leaks in the tests.
...
Found by Valgrind.
2009-12-16 12:24:19 +01:00
Vincent Povirk
3ac34f7416
ole32: Properly free temporary objects when StorageBaseImpl_CopyTo fails.
2009-12-14 12:06:35 +01:00
Vincent Povirk
6afe24c38d
ole32: Remove an unnecessary special case in StorageBaseImpl_CopyTo.
...
Opening a storage when it has already been opened now fails with
STG_E_ACCESSDENIED. If we attempt to copy a storage to its own child, this
will happen during the copy.
2009-12-14 12:06:25 +01:00
Vincent Povirk
0ad48797f8
ole32: Fix a memory leak in StorageBaseImpl_CopyTo.
...
Spotted by valgrind.
2009-12-14 12:06:17 +01:00
Vincent Povirk
3ff33e9303
ole32: Implement Revert for transacted storage objects.
2009-12-11 12:16:26 +01:00
Vincent Povirk
226363f5df
ole32: Implement transacted storage.
2009-12-11 12:16:26 +01:00
Vincent Povirk
d799f7e189
ole32: Add a stub transacted storage type.
...
TransactedSnapshotImpl acts as a proxy between the user and the storage
interfaces that modify the file directly (or another transacted storage).
Currently, it does not change the operations.
2009-12-11 12:16:26 +01:00
Vincent Povirk
42142200d5
ole32: Add Invalidate to the storage vtable.
2009-12-11 12:16:26 +01:00
Vincent Povirk
75fe621192
ole32: Create internal storage objects with a refcount of 1.
...
For consistency with StorageImpl_Construct.
2009-12-11 12:16:25 +01:00
Paul Vriens
49d40d80f4
ole32/tests: Don't crash on Win9x/WinMe by using more A-functions.
2009-12-10 12:39:52 +01:00
Vincent Povirk
8b3ff9d179
ole32: Remove the ancestorStorage attribute.
2009-12-10 11:51:39 +01:00
Vincent Povirk
5d39c31bff
ole32: Make IEnumSTATSTGImpl reference the parent storage.
2009-12-10 11:51:29 +01:00
Vincent Povirk
43184aaf52
ole32: Make findElement take a StorageBaseImpl.
2009-12-10 11:51:21 +01:00
Vincent Povirk
55b3a6e59f
ole32: Don't use ancestorStorage to decide if a storage is transacted.
2009-12-10 11:51:10 +01:00
Vincent Povirk
1a12141d86
ole32: Add a test for modifying read-only substorage objects.
2009-12-10 11:51:01 +01:00
Huw Davies
09db528847
ole32: Release the error info strings.
...
Found by Valgrind.
2009-12-09 16:50:36 +01:00
Alexandre Julliard
44a9bae9f8
ole32: Fix some pointer cast warnings on 64-bit.
2009-12-09 12:04:01 +01:00
Vincent Povirk
df0ef756b3
ole32: Add an attribute to StorageBaseImpl to track its reverted status.
2009-12-09 12:03:40 +01:00
Vincent Povirk
5b79c5a5e4
ole32: Store the parent of internal storage objects.
2009-12-09 12:03:30 +01:00
Vincent Povirk
8518323e07
ole32: Don't track the stream size in storage stream objects.
...
We can't do this safely when there are multiple objects for a single stream.
2009-12-09 12:03:18 +01:00
Vincent Povirk
6d06c43e53
ole32: Use the storage vtable to resize streams.
2009-12-09 12:03:10 +01:00
Vincent Povirk
1d4c698ef3
ole32: Use the storage vtable to write to streams.
2009-12-09 12:02:59 +01:00
Vincent Povirk
62e54bacba
ole32: Use the storage vtable to read streams.
2009-12-08 12:35:33 +01:00
Vincent Povirk
ee39a21d2b
ole32: Add DestroyDirEntry to the storage vtable.
2009-12-08 12:35:17 +01:00
Vincent Povirk
f43e013f73
ole32: Take a StorageBaseImpl in removeFromTree.
2009-12-08 12:35:08 +01:00
Vincent Povirk
0425ed1d38
ole32: Take a StorageBaseImpl in insertIntoTree.
2009-12-08 12:35:00 +01:00
Vincent Povirk
9300a92ccc
ole32: Change the base IStorage filename to a pointer type.
...
The maximum size of the name returned by Stat() on a top-level storage has
nothing to do with DIRENTRY_NAME_BUFFER_LEN. Windows can return longer names
and probably has a limit of MAX_PATH. Also, Stat always returns an absolute
pathname, so we don't need a special case in StgOpenStorage.
2009-12-08 12:34:47 +01:00
Nathan Gallaher
de239d86fd
ole32: Fix invalid memory access in storage32.
2009-12-07 14:53:31 +01:00
Vincent Povirk
f3d194b391
ole32: Add ReadDirEntry to the storage vtable.
2009-12-07 09:49:05 +01:00
Vincent Povirk
176cdfc75e
ole32: Add WriteDirEntry to the storage vtable.
2009-12-07 09:49:05 +01:00
Vincent Povirk
8a332db2c5
ole32: Change ReadDirEntry return type to HRESULT.
2009-12-07 09:49:05 +01:00
Vincent Povirk
df13a1d1fe
ole32: Change WriteDirEntry return type to HRESULT.
2009-12-07 09:49:05 +01:00
Vincent Povirk
382ffed003
ole32: Make CreateDirEntry a virtual method.
2009-12-07 09:49:05 +01:00
Rob Shearman
2b74e774f9
ole32: Add tests for HGLOBAL stream ignoring the HighPart of the offset for seeks.
2009-12-07 09:32:11 +01:00
Rob Shearman
4ad631286a
ole32: Initialise all of position variables in test_save_load_filemoniker.
...
Initialise all 8-bytes instead of just the lower 4-bytes. This test
isn't designed to be testing whether the Seek method of the object
return by CreateStreamOnHGlobal uses the high part of the positions
passed in.
2009-12-07 09:32:08 +01:00
Vincent Povirk
cc98619ca4
ole32: Add an internal vtable to StorageBaseImpl objects.
2009-12-04 14:34:59 +01:00
Vincent Povirk
f434ab1f2a
ole32: Unify the logic for overriding the root storage filename in Stat.
...
This is needed so that the new transacted type will be able to easily support
this logic.
2009-12-04 14:34:59 +01:00
Vincent Povirk
5456724fd7
ole32: Move the create attribute from StorageImpl to StorageBaseImpl.
...
This is to avoid accessing the top-level StorageImpl directly.
2009-12-04 14:34:58 +01:00
Vincent Povirk
b6dc718c44
ole32: Check the current storage for STGM_SIMPLE rather than ancestorStorage.
...
Since simple mode does not support substorages, we know these are the same.
2009-12-04 14:34:58 +01:00
Vincent Povirk
cf5e6c571a
ole32: Forbid substorages of simple mode storages.
2009-12-04 14:34:58 +01:00
Rob Shearman
552c91106d
ole32: Fix test failure on win2000+.
...
These OSs have different behaviour w.r.t. quotes in path names and
don't ignore the rest of the path outside of the quotes.
2009-12-01 15:10:37 +01:00
Rob Shearman
510ed24f9a
ole32: Cope with double quotes in paths for libraries to be loaded from the registry.
2009-11-30 12:48:05 +01:00
Rob Shearman
2226b678e3
ole32: Fix the length of data written and read for VT_CF types in property storage code.
2009-11-29 16:40:26 +01:00
Rob Shearman
add909a021
ole32: Release the storage object in DataCache_Destroy.
2009-11-29 16:40:12 +01:00
Rob Shearman
db33e8fdd9
ole32: Fix off-by-one error in FileMonikerImpl_DecomposePath.
...
strgtable needs to be an array of the same size as str, including the
nul-terminator.
2009-11-29 16:39:45 +01:00
Rob Shearman
6592c25bc7
ole32: Fix circular reference count in default handler objects.
...
This is caused by caching a pointer and reference to the data cache's
IPersistStorage interface without managing reference counts
appropriately.
2009-11-24 15:54:56 +01:00
Rob Shearman
4b1d527b15
ole32: Fix a typo in PropertyStorage_WritePropertyToStream that caused the wrong data to be written to the stream.
...
The field pClipData is a pointer to the data to be written, not the start of it.
2009-11-24 15:54:41 +01:00
Vincent Povirk
9da3365e84
ole32: Allocate the StorageImpl in StorageImpl_Construct.
...
This makes cleanup after errors much easier, as we can just use the regular
destructor.
2009-11-24 10:55:59 +01:00
Vincent Povirk
6c3961f0c4
ole32: Copy the storage filename at stat time, not read time.
2009-11-24 10:55:45 +01:00
Rob Shearman
9943facb26
ole32: Fix error code returned by CoGetClassObject/CoCreateInstance in CLSCTX_REMOTE_SERVER case.
2009-11-24 10:52:07 +01:00
Rob Shearman
8554ce5b18
ole32: Add tests for errors returned by CoCreateInstance for classes that are not registered.
2009-11-24 10:52:02 +01:00
Marcus Meissner
000e1e0ce0
ole32: Some missing error checking in FileMonikerImpl_CommonPrefixWith (Coverity).
2009-11-24 10:51:42 +01:00
Rob Shearman
24cccbf4d1
ole32: Add inproc handler object creation support for CoCreateInstance.
2009-11-24 10:46:12 +01:00
Rob Shearman
a7b621bd9b
ole32: Fix behaviour of CoLockObjectExternal with fLastUnlockReleases as FALSE.
...
The parameter controls whether weak references are ignored, not
whether the last stub_manager_int_release should be called when the
total reference count goes to zero.
2009-11-24 10:46:06 +01:00
Rob Shearman
bcf0be6a99
ole32: Add test for CoLockObjectExternal with fLastUnlockReleases as FALSE.
2009-11-24 10:46:00 +01:00
Rob Shearman
d963e97f32
ole32: Objects registered as local servers don't need to support IClassFactory.
2009-11-20 16:38:56 +01:00
Rob Shearman
377159c4a7
ole32: Fix size of memory allocation in FileMonikerImpl_DecomposePath.
2009-11-20 16:38:46 +01:00
Rob Shearman
d1db29e801
ole32: Fix buffer overrun in CLIPFORMAT_UserMarshal.
...
The string in format is nul-terminated so use memcpy to copy it into
the buffer and don't try to nul-terminate it manually which causes a
write outside of the allocated buffer length.
Fix a similar off-by-one error in CLIPFORMAT_UserUnmarshal too. This
time it is only reading from beyond the buffer.
2009-11-20 16:38:39 +01:00
Vincent Povirk
669af158da
ole32: Invalidate open storage objects that are deleted.
2009-11-20 11:15:53 +01:00
Vincent Povirk
8569d547b9
ole32: Forbid renaming an open storage.
2009-11-20 11:15:44 +01:00
Vincent Povirk
c62a4ad841
ole32: Forbid opening the same storage twice.
2009-11-20 11:15:35 +01:00
Vincent Povirk
d3c0a3a829
ole32: Invalidate open storage objects that outlive their parent.
2009-11-20 11:15:27 +01:00
Vincent Povirk
3cd2a80eda
ole32: Add test for freeing the parent of a storage.
2009-11-20 11:15:21 +01:00
Vincent Povirk
52100e9620
ole32: Do not allow renaming streams that are open.
2009-11-19 11:46:57 +01:00
Vincent Povirk
371f6a4818
ole32: Do not allow the same stream to be opened twice.
2009-11-19 11:46:49 +01:00
Vincent Povirk
53128d522b
ole32: Use safe list iteration when searching for streams to invalidate.
2009-11-19 11:46:41 +01:00
Vincent Povirk
9d0c4c971d
ole32: Always invalidate stream objects when deleting the stream.
2009-11-19 11:46:32 +01:00
Vincent Povirk
a2c405fa15
ole32: Add a test for freeing the parent of an open stream.
2009-11-19 11:46:18 +01:00
Vincent Povirk
55604eb36c
ole32: Invalidate child streams when a non-top-level storage is freed.
2009-11-19 11:46:07 +01:00
Vincent Povirk
e77e9e45aa
ole32: Add a DirRef type for references to directory entries.
2009-11-18 11:03:58 +01:00
Vincent Povirk
d3dbc8b1e6
ole32: Rename property variables in storage stream implementation.
2009-11-18 11:03:30 +01:00
Rob Shearman
932544d34c
ole32: OleInitialize should return S_OK if it is called for the first time on a thread independently of CoInitializeEx.
2009-11-17 15:14:53 +01:00
Vincent Povirk
aca5cc52e1
ole32: Rename property variables in SmallBlockChainStream methods.
2009-11-17 12:04:41 +01:00
Vincent Povirk
8f2d0f8887
ole32: Rename property variables in BlockChainStream methods.
2009-11-17 12:04:34 +01:00
Vincent Povirk
3aa8cdec7b
ole32: Rename property variables in StorageInternalImpl_Construct.
2009-11-17 12:04:27 +01:00
Vincent Povirk
f8ca09c0b8
ole32: Rename property variables in IEnumSTATSTGImpl methods.
2009-11-17 12:04:21 +01:00
Vincent Povirk
54781b657f
ole32: Rename property variables in block chain conversion functions.
2009-11-17 12:04:14 +01:00
Vincent Povirk
d21d690ac5
ole32: Rename property variables in internal StorageImpl methods.
2009-11-17 12:04:07 +01:00
Vincent Povirk
26acdb3efd
ole32: Rename property variables in StorageImpl_Construct.
2009-11-17 12:04:00 +01:00
Vincent Povirk
f1861166bb
ole32: Rename property variables in internal storage functions.
2009-11-17 12:03:52 +01:00
Vincent Povirk
b984e46b86
ole32: Rename property variables in the StorageBaseImpl methods.
2009-11-17 12:03:42 +01:00
Vincent Povirk
de3ed0bb50
ole32: Rename firstPropertyNode to storageDirEntry.
2009-11-17 12:03:32 +01:00
Vincent Povirk
42e8dfa2cb
ole32: Rename propertyNameCmp to entryNameCmp.
2009-11-16 11:33:54 +01:00
Vincent Povirk
a9ad3fed29
ole32: Rename property variables in insertIntoTree.
2009-11-16 11:33:47 +01:00
Vincent Povirk
14647d7ca9
ole32: Rename deleteSt*Property to deleteSt*Contents.
...
We now only delete the node contents in these functions.
2009-11-16 11:33:41 +01:00
Vincent Povirk
390e2711f6
ole32: Rename rootPropertyName to rootEntryName.
2009-11-16 11:33:30 +01:00
Vincent Povirk
93db14e79a
ole32: Rename SmallBlockChainStream.ownerPropertyIndex to ownerDirEntry.
2009-11-16 11:33:22 +01:00
Vincent Povirk
848caa5168
ole32: Rename BlockChainStream.ownerPropertyIndex to ownerDirEntry.
2009-11-16 11:33:15 +01:00
Vincent Povirk
df960e27c4
ole32: Rename stream.ownerProperty to dirEntry.
2009-11-16 11:33:06 +01:00
Vincent Povirk
4ba13cb9a7
ole32: Rename rootPropertySetIndex to storageDirEntry.
...
Not only is it not related to property set storages, it's also not the root
of the tree that's used to search for elements.
2009-11-16 11:32:58 +01:00
Vincent Povirk
cf1242e03b
ole32: Rename propertyUniqueID to clsid.
2009-11-16 11:32:47 +01:00
Vincent Povirk
2203264bfa
ole32: Rename propertyType to stgType.
2009-11-16 11:32:39 +01:00
Vincent Povirk
5838bcf801
ole32: Rename PROPERTY_RELATION constants to DIRENTRY_RELATION.
2009-11-13 11:52:24 +01:00
Vincent Povirk
5969bde0b1
ole32: Rename dirProperty to dirRootEntry.
2009-11-13 11:52:24 +01:00
Vincent Povirk
8a8471a765
ole32: Rename PROPSET_BLOCK_SIZE to RAW_DIRENTRY_SIZE.
2009-11-13 11:52:23 +01:00
Vincent Povirk
74d0503026
ole32: Rename PROPERTY_NAME_*_LEN to DIRENTRY_NAME_*_LEN.
2009-11-13 11:52:23 +01:00
Vincent Povirk
86759988f1
ole32: Rename PROPERTY_NULL to DIRENTRY_NULL.
2009-11-13 11:52:23 +01:00
Vincent Povirk
1bd2617c7a
ole32: Rename StorageUtl_CopyPropertyToSTATSTG.
2009-11-12 13:08:15 +01:00