Commit Graph

1862 Commits

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