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
Vincent Povirk
42a4b11e2d
ole32: Rename StorageImpl_WriteProperty to StorageImpl_WriteDirEntry.
2009-11-12 13:08:08 +01:00
Vincent Povirk
b3c30b1f4a
ole32: Rename StorageImpl_ReadProperty to StorageImpl_ReadDirEntry.
2009-11-12 13:08:00 +01:00
Vincent Povirk
39e894f4f6
ole32: Rename the StgProperty structure to DirEntry.
...
The term "property" is misleading (ole32 has an unrelated feature
called a "property set storage"), and I haven't seen it used anywhere
outside the Wine code. The term "directory entry" matches the MS
documentation and more accurately describes their use in the file.
2009-11-12 13:07:49 +01:00
Vincent Povirk
b1baa05e28
ole32: Remove the term "property type", it's just an STGTY.
...
According to the MS spec, the types in compound storage files are simply
STGTY values, with an extra value named STGTY_ROOT for the root storage.
2009-11-12 13:07:27 +01:00
Hans Leidekker
e265d534e4
ole32: Return success from OleLockRunning when the object does not support IRunnableObject.
2009-11-11 11:50:50 +01:00
Vincent Povirk
bc3fa10773
ole32: Add tests for IStorage_RenameElement.
2009-11-11 10:55:07 +01:00
Vincent Povirk
87ed7d9b8b
ole32: Simplify RenameElement by using the same entry in the file.
2009-11-11 10:54:59 +01:00