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