Commit Graph

297 Commits

Author SHA1 Message Date
Vincent Povirk
d420a858da ole32: Add error checking to StorageBaseImpl_CreateStorage. 2010-02-15 12:20:01 +01:00
Vincent Povirk
1fab6e3515 ole32: Add error checking to StorageBaseImpl_CreateStream. 2010-02-15 12:20:00 +01:00
Vincent Povirk
35b800dc92 ole32: Only warn about storage share mode once. 2010-02-12 11:54:36 +01:00
Vincent Povirk
da250c9afe ole32: IStorage_Revert has no effect for non-transacted storages. 2010-01-25 12:58:22 +01:00
Andrew Eikum
7fe78c14e9 ole32: Downgrade StgIsStorageFile debug info from WARN to TRACE. 2010-01-07 09:25:51 +01:00
Vincent Povirk
0debd2fef4 ole32: Remove fixme for transacted mode. 2010-01-04 11:41:28 +01:00
Alexander Kochetkov
56bc0515c2 ole32/storage32: Fix return value for invalid access mode in OpenStream. 2009-12-30 16:13:57 +01:00
Vincent Povirk
ffc4a49bcb ole32: Always allow changes to read-only transacted storages.
The only time the write permissions of transacted storages matter is when
committing.
2009-12-28 11:54:49 +01:00
Vincent Povirk
b3511ebb70 ole32: Reread the stream entry after setting the size in StreamWriteAt.
In simple mode, StreamWriteAt would assume that StreamSetSize uses the size
it asks for, but in some cases the size would be pushed above the small block
limit. StreamWriteAt would then attempt to write using a small block chain,
even though a big block chain was created.
2009-12-21 15:01:24 +01:00
Vincent Povirk
fc50ff07d6 ole32: Store the most recent item name in IEnumSTATSTG instead of a stack. 2009-12-21 15:01:24 +01:00
Vincent Povirk
4492850200 ole32: Make IEnumSTATSTG functions fail when the parent is invalid. 2009-12-21 15:01:23 +01:00
Vincent Povirk
5d9fd1b716 ole32: Compare upper character values directly in entryNameCmp.
The sort function used by native is not entirely consistent with lstrcmpiW,
even on Windows.
2009-12-18 11:43:34 +01:00
Vincent Povirk
393c5af205 ole32: Add a cache for block chain streams in StorageImpl. 2009-12-16 12:24:27 +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
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
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
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
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
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