Commit Graph

2402 Commits

Author SHA1 Message Date
Dmitry Timoshkov f9bc636d35 ole32: PropVariantCopy should return DISP_E_BADVARTYPE in case of bad source variant type.
In some rare (notably for some VT_VECTOR) cases Windows implementation
returns STG_E_INVALIDPARAMETER, but returning DISP_E_BADVARTYPE should
cover most of cases.

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-21 00:25:33 +09:00
Huw Davies 5ae2b5ae93 ole32: Release interfaces as part of Stop.
This can now be done as Stop will no longer be called from within an object call.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-15 00:53:19 +09:00
Huw Davies 719c479a36 ole32: Defer calling Stop in an OnClose notification during an object call.
The OnClose notification may arrive during a call to the object.  Releasing the
object's interfaces at this point would be bad, so delay this until after the
object call returns.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-15 00:53:19 +09:00
Huw Davies 79598c4803 ole32: Call the cache's OnRun and OnStop methods.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-15 00:53:18 +09:00
Huw Davies e4ec89f2b0 ole32: Return OLE_E_NOTRUNNING on a cache-miss when the object isn't running.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-15 00:53:18 +09:00
Huw Davies 4fcc5fec57 ole32: Always use object_is_running to check whether the object is running.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-14 20:36:55 +09:00
Huw Davies a56a0eb063 ole32: Rewrite _Run() to return early on failure.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-14 20:36:43 +09:00
Huw Davies afbb4afc6c ole32: Silence an incorrect fixme.
The remote unknown object should not implement IExternalConnection.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-14 12:43:28 +09:00
Huw Davies 1dcf3f8e0a ole32/tests: Test calling CoDisconnectObject from within a COM call to the object.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-14 12:43:21 +09:00
Huw Davies 327100fef9 ole32: Don't block inside CoDisconnectObject.
This may be called inside a COM call to the object.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-14 12:43:17 +09:00
Huw Davies 35571a7254 ole32: Hold a reference to the stub manager throughout an incoming call.
This will enable us to defer deleting the manager until the call has finished.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-14 12:43:13 +09:00
Huw Davies 09cd89c0cc ole32: Implement OleCreateFromFileEx.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-09 19:17:08 +09:00
Huw Davies 94ee4096ec ole32: Add a stub for OleCreateFromFileEx.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-09 19:17:02 +09:00
Huw Davies d340f09a33 ole32: Don't try to load a handler - the real server is needed.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-09 19:16:51 +09:00
Huw Davies 577644f3c1 ole32: Test the result of IRunningObjectTable_GetObject against S_OK.
Typically it would return MK_E_UNAVAILABLE and not S_FALSE if the moniker
is not registered.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-09 19:16:43 +09:00
Jacek Caban 38a9a232f7 ole32: Use get_stub_manager_from_object in CoDisconnectObject. 2015-09-04 19:29:29 +09:00
Jacek Caban cb183688bb ole32: Catch crashes in stub object destructors when destroying stub manager. 2015-09-02 22:45:17 +09:00
Jacek Caban c784e34693 ole32: Quote executable name in CreateProcess call.
Fixes tests on VMs that have spaces in executable path.
2015-09-02 22:45:05 +09:00
Jacek Caban 0a92038b38 ole32: Added tests for IPSFactoryBuffer::CreateStub calls. 2015-08-29 14:28:23 +09:00
Jacek Caban 9bdb97e694 ole32: Use proper interface pointer in CreateStub call. 2015-08-29 14:28:23 +09:00
Jacek Caban e5edbc6fa0 ole32: Use proper IUnknown implementation when finding and creating stub manager. 2015-08-29 14:28:22 +09:00
Jacek Caban 60451f9855 ole32: Create interface stub only if it's not already created. 2015-08-29 14:28:22 +09:00
Francois Gouget 25870c1fba ole32: A cosmetic fix for the CoMarshalInterface() trace. 2015-08-29 14:27:39 +09:00
Andrey Gusev 5cdcd4493f Assorted spelling and typos fixes. 2015-08-18 15:00:13 +09:00
Francois Gouget f8a7d6ed74 Assorted spelling fixes. 2015-08-07 23:50:48 +09:00
Vincent Povirk 9d517a1727 ole32: Ignore high part of size in storage version 3 files. 2015-08-06 21:42:46 +09:00
Hans Leidekker 4062db444c ole32: Add stub implementations of CoGetActivationState and CoGetCallState. 2015-08-03 12:11:10 +02:00
Piotr Caban 9fd75e8650 ole32/tests: Fix new failures in CoWaitForMultipleHandles tests. 2015-07-31 12:07:41 +02:00
Piotr Caban fbf7046ae8 ole32: Don't pump all messages in CoWaitForMultipleHandles in threads without apartment window. 2015-07-30 23:50:43 +02:00
Dmitry Timoshkov 76f9d93344 ole32: Fix a memory leak. 2015-07-13 22:08:38 +09:00
Damjan Jovanovic 372b0e1e80 ole32: Convey the Alt button state to the drop target. 2015-07-07 16:52:21 +09:00
Vincent Povirk 9cf835a947 ole32: Use grfLocksSupported to decide when LockRegion is implemented. 2015-07-07 16:52:21 +09:00
Vincent Povirk 8ff3783586 ole32: Add a storage test using a custom ILockBytes. 2015-07-07 16:52:21 +09:00
Dmitry Timoshkov 1f17334fc2 ole32: Accept STG_E_UNIMPLEMENTEDFUNCTION when ILockBytes implementation doesn't support locking.
Some custom implementations return it instead of STG_E_INVALIDFUNCTION.
2015-07-06 16:34:47 +09:00
Nikolay Sivov 64456de761 ole32: Handle EnumElements() failure (Coverity). 2015-06-29 18:51:02 +09:00
Nikolay Sivov 1e97a2db17 ole32/tests: Fix source buffer leak (Valgrind). 2015-06-22 15:31:54 +09:00
Nikolay Sivov 4cef7ad841 ole32: Fix a typo in argument name. 2015-06-17 18:19:55 +09:00
Nikolay Sivov 61368e76e4 ole32: Marshal HBRUSH as remotable handle. 2015-06-16 16:50:35 +09:00
Nikolay Sivov 6d53f071c6 ole32: Marshal HICON as remotable handle. 2015-06-15 22:10:31 +09:00
Nikolay Sivov 815197f28c ole32: Marshal HDC as remotable handle. 2015-06-15 22:10:31 +09:00
Vincent Povirk 3f83b788d4 ole32: Fix storage locking for read-only exclusive mode. 2015-06-12 21:22:42 +09:00
Nikolay Sivov ff6201c61f ole32/tests: Test if user memory routines are called, remove some useless traces. 2015-06-05 18:38:21 +09:00
Nikolay Sivov bfa23b637e ole32: Fix length of buffer allocated by SNB_UserUnmarshal() (Valgrind). 2015-06-04 15:55:53 +09:00
Nikolay Sivov 7c5f639cb8 ole32: Initialize returned value for disconnected case too in proxy_manager_get_remunknown() (Coverity). 2015-06-01 14:52:56 +09:00
Nikolay Sivov 5c0e48e8ca ole32: Avoid potential null pointer access (Coverity). 2015-06-01 14:52:52 +09:00
Nikolay Sivov 10c878a451 ole32: Implemented some proxy/stubs methods. 2015-06-01 14:43:02 +09:00
Sebastian Lackner fdd83248b6 ole32/tests: Add additional tests for CoWaitForMultipleHandles and WM_QUIT. 2015-05-22 14:09:19 +09:00
Nikolay Sivov aa3a234803 ole32: Implement SNB marshalling. 2015-05-15 21:58:06 +09:00
Francois Gouget 5f35f1a8db ole32/tests: Silence some clipboard traces that generate too many lines. 2015-05-12 22:32:34 +09:00
Nikolay Sivov 26a9f62db7 ole32/tests: Added a test for OleRun(). 2015-05-08 18:33:35 +09:00
Francois Gouget 514345b401 ole32: Make some storage32 functions static. 2015-05-04 15:07:39 +09:00
Francois Gouget 356748e6bc ole32: Reorder storage32 functions to avoid forward declarations. 2015-05-04 15:07:35 +09:00
Francois Gouget 58e47c612f ole32: Fix some storage32 comments. 2015-05-04 15:06:53 +09:00
Nikolay Sivov bb37d75074 ole32/tests: Fix a test failure on Win8. 2015-05-01 21:12:42 +09:00
Nikolay Sivov 3d33d8a9c4 ole32/tests: Fix test failures on some VMs with limited user permissions. 2015-05-01 21:12:23 +09:00
Francois Gouget 7703852627 ole32; Fix some storage32 comments and standardize some virtual table names. 2015-04-27 15:08:46 +09:00
Huw Davies a38699084b ole32/tests: Win 8 releases the drop target in OleUninitialize(). 2015-04-20 14:37:13 +09:00
Nikolay Sivov 961b1a270f ole32: Remove a couple of interface casts. 2015-04-06 12:09:17 +09:00
Huw Davies f57e08995a ole32/tests: Add tests for loading a dib 'CONTENTS' stream. 2015-03-25 19:46:03 +09:00
Huw Davies b0deb315a0 ole32: Implement QueryGetData(). 2015-03-25 19:45:58 +09:00
Huw Davies b4cd2c4dbb ole32: Add support for drawing the dib format. 2015-03-25 19:45:55 +09:00
Huw Davies e410f273cd ole32: Add support for retrieving extents of dib format. 2015-03-25 19:45:52 +09:00
Huw Davies bbba2c00aa ole32: Add support for loading dibs. 2015-03-25 19:45:48 +09:00
Huw Davies 547fd746bb ole32: Separate metafile loading into a helper function. 2015-03-25 19:45:42 +09:00
Huw Davies 480c10cce9 ole32: Add support for parsing the 'CONTENTS' stream. 2015-03-25 19:45:36 +09:00
Huw Davies d864387aaa ole32: Split the data loading into a couple of helpers. 2015-03-25 19:45:31 +09:00
Huw Davies a4e3668f3f ole32: A cache entry should hold the stream its data is from, not the top-level storage. 2015-03-25 19:45:10 +09:00
Huw Davies c5e020c5b5 ole32: Read the class id from the top-level storage object.
The cache_entries' storages are just references to the same object anyway.
2015-03-25 19:44:59 +09:00
Nikolay Sivov 597515c074 ole32/tests: Return interface pointer instead of impl pointer from QI. 2015-03-24 18:16:34 +09:00
Nikolay Sivov 7d44fa714a ole32: Return interface pointers instead of impl pointers from QI. 2015-03-24 18:16:30 +09:00
Nikolay Sivov bc9b29f65d ole32: Cleanup QI for IEnumMoniker. 2015-03-20 16:23:12 +09:00
Nikolay Sivov 853dc5ec2f ole32: Improve error handling in GetClassFile() (PVS-Studio). 2015-03-20 16:23:10 +09:00
Nikolay Sivov f294ea8333 ole32: Fix error handling in GetTimeOfLastChange() for item moniker (PVS-Studio). 2015-03-20 16:23:08 +09:00
Francois Gouget f505e6fb4a Assorted spelling fixes. 2015-03-19 21:54:14 +09:00
Nikolay Sivov 3376648224 ole32/datacache: Handle stream Stat() failure (PVS-Studio). 2015-03-19 16:56:05 +09:00
Nikolay Sivov 1c2bbe8f65 ole32: Handle ILockBytes creation failure (PVS-Studio). 2015-03-17 14:19:12 +09:00
Francois Gouget 7fe0600237 ole32: Remove unneeded NONAMELESSXXX directives. 2015-03-17 14:18:54 +09:00
Nikolay Sivov 0e24c33332 ole32: Handle Stat() failure in OleLoad() (PVS-Studio). 2015-03-13 22:28:31 +09:00
Nikolay Sivov 24dce2b229 ole32: Handle some failures in Inverse() for composite moniker (PVS-Studio). 2015-03-13 22:28:31 +09:00
Nikolay Sivov 46914d8794 ole32: Check ComposeWith() return value too (PVS-Studio). 2015-03-13 22:28:31 +09:00
Sebastian Lackner 66e8060204 ole32: Wait a bit before doing next sanity check in StorageImpl_LockRegionSync. 2015-03-13 00:28:21 +09:00
Alexandre Julliard c6c3ccad36 ole32: Remove confusing uses of the __thiscall specifier. 2015-03-12 14:20:33 +09:00
Sebastian Lackner 59a1bcd96a ole32: Fix call to free_stringtable with uninitialized pointer (Coverity). 2015-03-11 12:47:40 +09:00
Sebastian Lackner 83aca6e7aa ole32: Fix a possible handle leak (Coverity). 2015-03-11 12:46:54 +09:00
Vincent Povirk 0b7c05389b ole32: Fail to open storage files that are locked incorrectly. 2015-03-11 12:45:52 +09:00
Vincent Povirk eead04803f ole32: Add a 20 second timeout when attempting to grab locks. 2015-03-11 12:45:49 +09:00
Vincent Povirk 1645f7b9e3 ole32: Accept only STG_E_INVALIDFUNCTION or success from LockRegionSync. 2015-03-11 12:45:42 +09:00
Vincent Povirk c8791edbdf ole32: Don't use real synchronous locks for storage synchronization. 2015-03-11 12:45:38 +09:00
Vincent Povirk 06b735ae76 ole32: Test the entire range lock block for synchronization. 2015-03-11 12:45:33 +09:00
Nikolay Sivov 44360823b9 oleaut32: Use WdtpInterfacePointer_* functions in VARIANT marshalling. 2015-03-09 22:06:21 +09:00
Francois Gouget fb908b3a95 ole32: Don't define NONAMELESSUNION in olestd.h. It's not needed anyway. 2015-03-06 12:53:55 +09:00
Sebastian Lackner c23db594aa ole32: Fix an invalid usage of InterlockedCompareExchange. 2015-03-03 17:13:46 +09:00
André Hentschel 8af03fef9a ole32: Remove unused macros. 2015-02-23 15:25:56 +09:00
Michael Stefaniuc 73019d5e20 ole32: Remove an always true conditional subexpression (PVS-Studio). 2015-02-18 16:09:13 +09:00
Michael Stefaniuc 514951cc11 ole32: Return the buffer pointer when WdtpInterfacePointer_UserMarshal fails.
Found by PVS-Studio.
2015-01-19 14:20:50 +01:00
Michael Stefaniuc 139ebf643a ole32/tests: Remove unused assignments (PVS-Studio). 2015-01-19 14:20:36 +01:00
Michael Stefaniuc c2da97a5e5 ole32/tests: Actually test some return codes (PVS-Studio). 2015-01-19 14:20:32 +01:00
Qian Hong a940718a4d ole32: Make CoUninitialize and OleUninitialize hotpatchable. 2015-01-16 16:52:25 +01:00
Piotr Caban 95c57c618a ole32: Only change DoDragDrop return value on IDropTarget::Drop failure. 2015-01-15 14:06:24 +01:00
Nikolay Sivov 73419dc484 ole32: Return END_OF_CHAIN for chains starting with special sector values. 2014-12-29 22:20:29 +01:00