Commit Graph

1784 Commits

Author SHA1 Message Date
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