Huw Davies
250b55c41d
ole32: Call the draw_continue function.
2010-09-28 17:33:17 +02:00
Huw Davies
6c7dd939cf
ole32/tests: Mark the draw_continue callbacks as optional. Win9x can skip calls under low-load conditions.
2010-09-28 17:33:17 +02:00
Alexandre Julliard
81b8ee863e
makefiles: Add a standard header for all makefiles to replace the common variable initializations.
2010-09-19 12:36:48 +02:00
Marcus Meissner
8d25534613
ole32: Check for interface NULL which happens with e.g. Abiword.
2010-09-16 13:37:32 -05:00
Vincent Povirk
2752c3bcd0
ole32: Don't fail if the file ends during a big block.
...
Apparently, it's valid for the last block in a file to be incomplete.
2010-09-08 13:30:46 +02:00
Alexandre Julliard
dd84876c3e
ole32: Use int64 in the spec file for 64-bit integers.
2010-08-31 14:23:48 +02:00
Vincent Povirk
89646084ba
ole32: Cache data and block locations in BigBlockStream objects.
2010-08-26 13:59:31 +02:00
Vincent Povirk
101de22a1a
ole32: Flush before returning from any storage API call that writes.
2010-08-26 13:59:28 +02:00
Huw Davies
127260bb62
ole32: Pass a real IUnknown ptr to CoMarshalInterface.
2010-07-28 16:28:21 +02:00
Michael Stefaniuc
ffac31da09
ole32: Use IsEqualIID instead of memcmp to compare REFIIDs.
2010-07-23 11:46:29 +02:00
Huw Davies
6d1ef3a6a6
ole32: Implement cross-process drag and drop.
2010-07-22 16:11:59 +02:00
Huw Davies
a2e1dd29dc
ole32/tests: Relax the reference counting tests a bit. We only care whether references are held or not.
2010-07-22 16:11:51 +02:00
Nikolay Sivov
1b0182f9bb
ole32: Use IsEqualIID() instead of memcmp().
2010-07-21 17:38:37 +02:00
Nikolay Sivov
114510801f
ole32: No need to test for interface pointer being null.
2010-07-21 17:38:37 +02:00
Nikolay Sivov
2f61e19156
ole32: Fix assumption about HRESULT failure code value.
2010-07-21 17:38:37 +02:00
Nikolay Sivov
5185409144
ole32: Remove redundant variables.
2010-07-21 17:38:37 +02:00
Alexandre Julliard
b86d515ed6
dlls: Remove explicit imports of kernel32 and ntdll.
2010-07-21 17:38:36 +02:00
Vincent Povirk
5116b979b2
ole32: Flush the ILockBytes object of a storage on commit and final release.
...
Some ILockBytes objects will not really write changes until their Flush
method is called. Also, further optimizations to the storage implementation
will involve caching writes, which will have to be flushed at times.
2010-07-19 14:38:16 +02:00
Vincent Povirk
b7dbfcbd48
ole32: Remove an unused variable.
2010-07-19 14:38:16 +02:00
Vincent Povirk
d0e6e4aa82
ole32: Use ILockBytes_Stat to get the filename of a storage.
2010-07-19 14:38:16 +02:00
Vincent Povirk
14f8f9d5b5
ole32: Remove the BigBlockFile abstraction and always use an ILockBytes.
2010-07-19 14:38:16 +02:00
Vincent Povirk
4171499411
ole32: Don't map storage files in memory.
2010-07-19 14:38:16 +02:00
Vincent Povirk
7f3c92b2a0
ole32: Update storage header saving code based on the latest MS spec.
...
These fields are needed for the MS storage implementation to load
files that were created by Wine with a block size of 4096.
2010-07-19 14:38:16 +02:00
Vincent Povirk
9c95761d9e
ole32: Always check the size of the small block root chain.
...
In some storage files, the size of this stream is not a multiple of the big
block size. This means that we may need to enlarge the stream even when we
don't really have to allocate more space for it.
2010-05-28 16:22:24 +02:00
Vincent Povirk
d64ee9ff11
ole32: Fix seeking backwards in hglobalstream.
2010-05-27 14:46:43 +02:00
Vincent Povirk
ff4292c229
ole32/tests: Add more IStream_Seek tests for hglobalstream.
2010-05-27 14:46:42 +02:00
Michael Stefaniuc
162e420f0e
ole32: Avoid potential NULL pointer dereferences in a TRACE.
2010-05-26 10:11:05 +02:00
Alexandre Julliard
78d1686b90
ole32: Implement the IAdviseSink call_as proxies and stubs.
...
Based on a patch by Rob Shearman.
2010-05-25 12:49:19 +02:00
Juan Lang
c94b2687d2
ole32: Only read known format ids when attempting to read summary information.
2010-05-25 12:02:47 +02:00
Juan Lang
b4c3a04165
ole32/tests: Test creating an IPropertySetStorage with an unknown format id.
2010-05-25 12:02:37 +02:00
Andrew Nguyen
07325c7d7c
ole32/tests: Add tests for output parameters in MkParseDisplayName.
2010-05-21 18:58:05 +02:00
Andrew Nguyen
7bdf023e69
ole32: Validate pointer parameters in MkParseDisplayName.
2010-05-21 18:58:05 +02:00
Nikolay Sivov
2c80e14eec
ole32: Use window property to store registered drop target.
2010-05-18 08:53:08 +02:00
Vincent Povirk
57ddceea34
ole32: Use a temporary variable in TransactedSnapshotImpl_EnsureReadEntry.
...
CreateStubEntry can change the value of This->entries, in which case the
assignment can go to the wrong place. So instead, assign to a temporary
variable, and copy the data back after all CreateStubEntry calls are finished.
2010-05-13 11:51:07 +02:00
Marcus Meissner
bf1e9a2e93
ole32: Fixed 2 uninitialized variable use (Coverity).
2010-05-10 10:03:43 +02:00
Vincent Povirk
dbf123ba0d
ole32: Fix reads past the end of streams.
2010-05-07 12:46:50 +02:00
Vincent Povirk
4ad114cfae
ole32: Use the cached information in BlockChainStream_GetCount.
2010-05-07 12:46:39 +02:00
Vincent Povirk
e40afcb2b6
ole32: Always move unmodified streams instead of copying on commit.
2010-05-06 17:55:43 +02:00
Vincent Povirk
d07a4868a1
ole32: Rewrite transacted storage to be more lazy.
...
When creating a new transacted storage object (or reverting an
existing one), rather than copy the original storage, we simply create
a "stub directory entry" for the root. As stub entries are accessed,
we fill in their data from the parent and create new stubs for any
linked entries. The streams have copy on write semantics - reads are
from the original entry until a change is made, then we make a copy in
the scratch file.
When committing transacted storages, we have to create a new tree with
the new data so that the storage entry can be modified in one step,
but unmodified sections of the tree can now be shared between the new
tree and the old. An entry can be shared if it and all entries
reachable from it are unmodified. In the trivial case where nothing
has been modified, we don't have to make a new tree at all.
2010-05-06 17:55:34 +02:00
Nikolay Sivov
56fdbc226e
ole32/ole2: Use W calls for registry access.
2010-05-06 14:22:23 +02:00
Vincent Povirk
42550953a6
ole32: Store the location of all blocks in a big block chain in memory.
...
A big block chain is a linked list, and we pretty much need random
access to them. This should theoretically make accessing a random
point in the chain O(log2 n) instead of O(n) (with disk access scaling
based on the size of the read/write, not its location). It
theoretically takes O(n) memory based on the size, but it can do
better if the chain isn't very fragmented (which I believe will
generally be the case for long chains). It also involves fetching all
the big block locations when we open the chain, but we already do that
anyway (and it should be faster to read it all in one go than
piecemeal).
2010-05-05 10:41:57 +02:00
Vincent Povirk
93cc582a8d
ole32: Remove some assumptions about the internals of BlockChainStream.
2010-05-05 10:41:26 +02:00
Nikolay Sivov
286c5f8816
ole32/marshal: Compare with S_OK instead of keeping in mind that it's zero.
2010-05-03 15:43:01 +02:00
Gerald Pfeifer
c6f74e386b
ole32: Fix return value for CoRevokeMallocSpy.
2010-05-03 15:40:20 +02:00
Gerald Pfeifer
889900f020
ole32: Fix return value of DefaultHandler_SetClientSite.
2010-05-03 15:40:13 +02:00
Nikolay Sivov
f3ab3d971a
ole32/ole2: If no effect action selected use ::DragLeave() instead of ::Drop().
2010-05-03 13:58:59 +02:00
Nikolay Sivov
9c44ed8a6b
ole32/ole2: After IDropTarget::DragEnter() failure target doesn't count as valid.
2010-05-03 13:58:54 +02:00
Nikolay Sivov
071d16d624
ole32/tests: Additional test for RevokeDragDrop with destroyed window.
2010-05-03 13:58:41 +02:00
Nikolay Sivov
5426320d82
ole32/ole2: Fix simple parameter handling for DoDragDrop().
2010-05-03 13:58:38 +02:00
Nikolay Sivov
a37dfe3584
ole32/tests: Move tests to a separate function.
2010-05-03 13:58:34 +02:00
Andrew Eikum
c22d776e74
ole32: Only fail on missing Implemented Categories key if we actually have categories to check.
2010-05-03 13:56:41 +02:00
Nikolay Sivov
5ac7b165e6
ole32: Use LoadCursorW instead of -A version.
2010-04-28 07:30:55 -05:00
Nikolay Sivov
16bd9d53b9
ole32: Avoid uninitialized value to be potentialy passed to UnhookWindowsHookEx.
2010-04-28 07:29:37 -05:00
Nikolay Sivov
d819f13911
ole32: Use -W versions of window/message calls.
2010-04-28 07:28:52 -05:00
Gerald Pfeifer
1e3aba6e7c
ole32: Remove variable res which is not really used from CompositeMonikerImpl_Reduce.
2010-04-26 09:03:09 -05:00
Vincent Povirk
0b149df987
ole32: Create storage files with 4096-byte blocks when asked.
2010-04-13 11:30:48 +02:00
Alexandre Julliard
38b6f4dfff
ole32/tests: Avoid using a pointer difference in a trace.
2010-04-09 16:14:16 +02:00
Alexandre Julliard
9b471fbd14
ole32: Fix the free threaded marshaller data for 64-bit pointers.
2010-04-07 13:09:49 +02:00
Alexandre Julliard
a8ffa9bace
ole32: Don't use in-memory structure layouts to build the wire data, define wire-specific structures instead.
2010-04-06 18:07:59 +02:00
Konstantin Kondratyuk
eab89da812
ole32: Add missed initialization of virtual function table.
2010-03-29 15:50:22 +02:00
Alexandre Julliard
a8e2f4327f
ole32: Always start the 64-bit version of rpcss.exe on Wow64.
2010-03-29 15:50:09 +02:00
Mikhail Maroukhine
f930c87fd6
objbase.h: CLSIDFromString: Add constness to the parameters declaration in accordance with MSDN.
2010-03-29 12:11:02 +02:00
Vincent Povirk
49a817c064
ole32: Check the small block size limit of storage files.
...
This value is stored in the storage file header. We currently hard-code it to
0x1000. I don't expect to see files in the wild with other values, but
according to MS this is a valid configuration. For now, just fail if we see
another value.
I've also upgraded the message for unexpected values in storage file headers
to a fixme, since they are valid according to MS.
2010-03-22 10:47:58 +01:00
Vincent Povirk
975c820fce
ole32: Don't register an IMallocSpy object when the ole trace is used.
...
There's no need for this. Any useful information we could get out of it
is availble from the olemalloc channel, and it means that the ole channel
changes behavior in a way that's visible to programs.
2010-03-22 10:47:47 +01:00
Vincent Povirk
e05b8416b8
ole32: Track the lowest possibly-free small block in storage files.
...
This makes creating small block chains O(n) instead of O(n**2) because we
don't have to keep rechecking the first blocks in the file.
2010-03-22 10:47:42 +01:00
Nikolay Sivov
0498534b6b
ole32: Remove useless parameter check.
2010-03-17 16:35:47 +01:00
Nikolay Sivov
825a635692
ole32: Turn FIXME to TRACE for CoGetTreatAsClass.
2010-03-16 17:04:15 +01:00
Alexandre Julliard
bef5645eb1
makefiles: Remove the no longer needed explicit separators for dependencies.
2010-03-16 13:28:19 +01:00
Vincent Povirk
93c2256cff
ole32: Allow storage files with a block size of 4096 to open.
2010-03-15 13:46:59 +01:00
Vincent Povirk
5ceb003a24
ole32: Remove knowledge of block sizes from the BigBlockFile object.
...
We can't determine the correct block size until we read the header, and we
can't create the BigBlockFile until we know the correct block size. To
solve this dilemma, have StorageImpl calculate the file size it needs instead
of asking the BigBlockFile to "ensure a big block exists".
2010-03-15 13:46:48 +01:00
Vincent Povirk
926669741e
ole32: Remove the NUM_BLOCKS_PER_DEPOT_BLOCK define.
...
This should always be calculated based on the big block size.
2010-03-15 13:46:31 +01:00
Vincent Povirk
7b43123762
ole32: Remove the BIG_BLOCK_SIZE define.
...
Big block sizes can be 512 or 4096, so we define arrays that are large
enough in either case.
2010-03-15 13:46:19 +01:00
Vincent Povirk
b90ab46a82
ole32: Remove the unused BlockBits structures from BigBlockFile objects.
2010-03-15 13:46:07 +01:00
Vincent Povirk
4b7e7bd77f
ole32: Fix the big block offset calculation.
...
Use the actual big block size from the open storage file. Also, remove a
special case that was only used for reading/writing the header.
2010-03-15 13:45:55 +01:00
Vincent Povirk
f3db25fc25
ole32: Don't treat the header as a big block in StorageImpl_SaveFileHeader.
2010-03-15 13:45:36 +01:00
Vincent Povirk
7f3211f383
ole32: Don't treat the header as a big block in StorageImpl_LoadFileHeader.
...
The header is always 512 bytes, regardless of the big block size.
2010-03-15 13:45:30 +01:00
Vincent Povirk
8d58a91fa3
ole32: Allow CopyTo to succeed in spite of already open source streams.
2010-03-15 13:17:34 +01:00
Alexandre Julliard
a456e641db
ole32/tests: Avoid sizeof in traces.
2010-03-05 15:17:57 +01:00
Vincent Povirk
3733789aa9
ole32: Add tests for CopyTo in recursive situations.
2010-03-04 12:29:21 +01:00
Vincent Povirk
11abad24dd
ole32: Add a test showing IStorage_CopyTo ignores open objects in the source.
2010-03-03 11:49:27 +01:00
Vincent Povirk
24ff704835
ole32: Clear the sibling links when reinserting a renamed element.
2010-03-02 16:44:12 +01:00
Reece Dunn
0ed4c6df24
ole32: IMoniker_IsRunning returns E_INVALIDARG when bindctx is NULL.
2010-03-02 11:12:37 +01:00
Reece Dunn
f08206b31f
ole32: Fix the HGLOBAL stream Seek implementation.
2010-02-25 12:10:40 +01:00
Reece Dunn
4cd390ca4e
ole32/tests: Improve the HGLOBAL stream tests for Seek.
2010-02-25 12:10:35 +01:00
Alexandre Julliard
6164ce2d82
makefiles: Use the standard C_SRCS variable as the list of test files.
...
This enables it to be auto-updated by make_makefiles.
2010-02-22 10:47:11 +01:00
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
Rob Shearman
c3af2dd752
ole32: Rearrange declarations in itemmoniker.c to avoid unnecessary forward declarations.
2010-01-22 12:18:46 +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
Alexandre Julliard
2bc9ba758e
ole32: Fix some pointer cast warnings on 64-bit.
2009-12-31 12:12:16 +01:00
Alexander Kochetkov
56bc0515c2
ole32/storage32: Fix return value for invalid access mode in OpenStream.
2009-12-30 16:13:57 +01:00
Rob Shearman
88219db8ab
ole32: Handle SetClipboardData failing in OLE clipboard functions.
2009-12-30 13:36:50 +01:00
Rob Shearman
36bfaea96d
ole32: Fix stream reference leak in test_ReadClassStm.
2009-12-30 13:36:46 +01:00
Rob Shearman
b7d86b54d9
ole32: Release the data object and free the cached enum data upon OleUninitialize.
2009-12-30 13:36:42 +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
Paul Vriens
25d15c68dc
ole32/tests: Fix a test failure on several platforms.
2009-12-22 13:48:24 +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
2010e0fb28
ole32: Add some tests for IEnumSTATSTG.
2009-12-21 15:01:23 +01:00
Vincent Povirk
4f0dfb51b3
ole32: Fix memory leaks in the storage test.
2009-12-18 11:44:04 +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
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