Commit Graph

129 Commits

Author SHA1 Message Date
Robert Shearman b0218db90a oleaut32: Fix circular reference count in Typelib marshaler.
The current method of handling typelib-marshaled interfaces that derive
from IDispatch is to query for an IDispatch pointer from the proxy, but
this causes a circular reference count.
Fix the reference counting by loading using the IRpcProxyBuffer of
IDispatch without an outer unknown, so that the lifetime is controlled
by the typelib-marshaled interface's proxy. The IDispatch proxy now
shares the same channel as the typelib-marshaled interface, so fix up
the stub side to handle this.
2006-02-07 16:26:23 +01:00
Robert Shearman fd81d9c56e oleaut32: Handle VT_INT in serialize_param and deserialize_param. 2006-02-07 16:26:02 +01:00
Robert Shearman ec5d73910c oleaut32: Release interfaces when told to.
Make the VT_DISPATCH and VT_UNKNOWN cases of serialize_param match the
TKIND_INTERFACE case below by releasing their respective interfaces as
necessary.
2006-02-07 16:25:42 +01:00
Robert Shearman 799ebfc499 oleaut: Improve the typelib marshaler traces.
Improve the typelib marshaler traces for lazy developers like me who
don't want to grep for constants.
2006-01-27 12:54:03 +01:00
Robert Shearman 89846948e3 oleaut: Reduce an ERR down to a WARN since a NULL interface pointer
doesn't signify an error; it is just unusual.
2006-01-18 11:29:01 +01:00
Robert Shearman 878af6661e oleaut: Support VT_CY in the typelib marshaller. 2006-01-14 17:47:25 +01:00
Robert Shearman b0d8e06caf OLE: Fix brokenness in typelib marshaller caused by dispinterface retval fix.
Fix more fallout from dispinterface retval patch: make typelib
marshaler use the internal function description so that it calls
dispinterface functions with the correct number of parameters again.
Also fixes some memory leaks caused by the fact that a corresponding
ReleaseXDesc function has to be called for each GetXDesc.
2005-12-06 21:24:19 +01:00
Marcus Meissner 2045ed2299 Added support for VT_I8/VT_UI8 marshalling. 2005-11-04 11:13:55 +00:00
Robert Shearman efe606fddb - Make sure to clean up properly on error.
- Restrict the critical section to getting the channel buffer and
  adding a reference to it.
2005-11-02 20:00:00 +00:00
Robert Shearman 69562b0edf There is no need to call IUnknown_QueryInterface since getting the
correct object is handled by the proxy manager.
2005-10-27 12:08:58 +00:00
Huw Davies 0c6d54631f Treat paramflags == 0 like PARAMFLAG_FIN. 2005-10-26 12:06:49 +00:00
Robert Shearman 5c2a708d51 - Forward IDispatch functions to the MIDL-generated proxy.
- Remove special cases caused by previous marshaling of IDispatch &
  IUnknown that is no longer done.
- Add error messages if an IUnknown or IDispatch method is called when
  it no longer should be.
2005-10-26 10:12:30 +00:00
Pierre d'Herbemont f26e8090c2 Allow compilation on non-i386. 2005-10-19 19:06:49 +00:00
Robert Shearman b3a4b59668 Fix ref-counting rules to match native DCOM Dlls. 2005-09-18 11:10:37 +00:00
Marcus Meissner 6f823db58b VT_PTR->VT_USERDEFINED chains depend on the TKIND of the userdefined
type due to our handling of COM interfaces in there.
2005-09-07 09:23:04 +00:00
Robert Shearman 44d6e39c8b Make typelib marshaler use IRpcChannelBuffer::GetBuffer if possible. 2005-08-29 21:46:51 +00:00
Robert Shearman 4519b1bd1d - Remove redundant QueryInterface in marshal_interface - the object is
always queried later on for the correct interface of the object.
- Make sure to Release the marshaled pointer in the typelib marshaler
  once it is no longer required.
2005-08-24 09:44:41 +00:00
Alexandre Julliard b8d0f4cd10 Get rid of the almost empty tmarshal.h file. 2005-08-09 10:38:54 +00:00
Mike McCormack a04b77ddc2 gcc 4.0 warning fixes. 2005-08-08 18:38:29 +00:00
Robert Shearman 6bfae1a1b7 - IRpcStubBuffer_Disconnect can be called multiple times.
- Release TypeLib when freeing stub buffer.
2005-07-19 20:00:07 +00:00
Robert Shearman d8780c7546 Fix confusion between number of characters and number of bytes in
unmarshaling BSTRs. Convert it all to characters for consistency with
the BSTR_User* routines.
2005-07-19 19:42:50 +00:00
Robert Shearman d2e2e851da Marshal and unmarshal TKIND_ENUM and TKIND_ALIAS. 2005-07-19 19:13:23 +00:00
Mike McCormack fc200d0ca7 Interlocked LONG* gcc warning fixes. 2005-07-11 10:25:19 +00:00
Mike McCormack d7b9a23afd gcc 4.0 -Wpointer-sign fixes (Reg* functions). 2005-07-06 19:08:05 +00:00
Robert Shearman 1329f87d46 - The typelib marshaler should only free the memory it actually allocated.
- Add special cases for two lesser used types that aren't
  sizeof(DWORD) sized.
2005-06-09 09:43:38 +00:00
Dmitry Timoshkov eba47f1dfe Make remaining OLE interface vtables const. 2005-06-06 19:50:35 +00:00
Robert Shearman c6296c418f If we are accessing a method from a superclass then we need to use the
superclass's ITypeInfo otherwise we could get errors when accessing
hreftypes that aren't present in the subclass.
2005-06-01 11:03:40 +00:00
Robert Shearman 5ef4748c7c Use I_RpcGetBuffer instead of HeapReAlloc for getting the Buffer
memory.
2005-05-11 15:56:59 +00:00
Marcus Meissner 41079866f7 Serialize NULL pointer interfaces correctly. 2005-03-29 13:06:44 +00:00
Marcus Meissner 4b5f3c61ad Fixed VT_BSTR|VT_BYREF marshalling.
Added VT_I4|VT_BYREF marshalling.
2005-03-29 11:29:11 +00:00
Marcus Meissner 89feaca290 Fixed ppvObject serializer (deref twice instead of once).
Actually pass back return value of remote call in type marshaller.
2005-03-28 10:00:49 +00:00
Mike Hearn edcbd13665 Fix BSTR tracing in the typelib marshaller. 2005-03-27 18:20:10 +00:00
Marcus Meissner c91df67f11 Format VT_UI1, VT_I1, VT_UI2, VT_I2 correctly. 2005-03-27 18:17:19 +00:00
Marcus Meissner e6260a3625 Added IDispatch::GetIDsOfNames() special case serializing.
Handle VT_PTR / NULL marshalling correctly.
2005-03-27 17:51:59 +00:00
Mike Hearn 9b79651579 Fix PARAMFLAG_FOUT typo in the tmarshaller. 2005-03-25 16:38:37 +00:00
Alexandre Julliard 232760ded0 Authors: Mike Hearn <mh@codeweavers.com>, Robert Shearman <rob@codeweavers.com>
- Implement VT_BYREF | VT_BSTR marshalling.
- Add more integer types for marshaling and unmarshaling.
- Implement VT_BYREF | VT_BSTR unmarshaling.
- Don't allocate memory for TKIND_DISPATCH/TKIND_INTERFACE
  unmarshaling as it will be lost in the success case and interferes
  with the failure case.
2005-03-14 10:09:11 +00:00
Robert Shearman ac23f2c810 Add outer unknown support for typelib marshaler. 2005-03-11 10:18:31 +00:00
Mike Hearn 64eac75fe4 - Change some FIXMEs to ERRs to reflect the fact that nothing needs
fixing.
- Fix some memory leaks on error paths in _marshal_interface.
2005-01-27 11:11:32 +00:00
Mike Hearn 6c093f39a4 Fix a typo, propagate errors better from inside the typelib
marshaller.
2005-01-26 19:42:17 +00:00
James Hawkins ba92d2924a - Use Interlocked* instead of ++/-- in AddRef/Release.
- Use only stored result of Interlocked* in AddRef/Release.
- Expand TRACEs to display the ref count.
2005-01-14 16:02:20 +00:00
Eric Pouech cf1d00bb08 Removed excessive statement (break after return or goto, not useful
break, not needed vars...)
2005-01-09 16:42:53 +00:00
Bill Medland 405abd5b06 Fully initialise the structure to prevent ill-defined behaviour. 2004-12-20 17:05:44 +00:00
Jon Griffiths f82272c92f Remove unneeded headers to reduce unneeded rebuilds. 2004-12-16 14:35:55 +00:00
Robert Shearman 67942791e2 Implement RPC_E_DISCONNECTED in proxies. 2004-12-14 11:44:11 +00:00
Francois Gouget 486d020c1b Don't define COBJMACROS in objbase.h.
Update the Wine sources accordingly.
2004-10-07 03:06:48 +00:00
Marcus Meissner 5539e288a6 Function return types cannot be const. 2004-09-27 20:33:27 +00:00
Alexandre Julliard 241a4c34b1 Get rid of the non-standard ICOM_THIS macro. 2004-09-09 21:03:58 +00:00
Robert Shearman 2a54aac7c5 - Make typelib marshaler thread-safe (problem reported by Aric
Stewart).
- Several small cleanups.
2004-09-07 20:42:26 +00:00
Alexandre Julliard f714b39762 Get rid of the no longer used ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
macro.
2004-08-23 19:39:48 +00:00
Alexandre Julliard 936198ce45 Moved ICOM_THIS_MULTI definition out of objbase.h and into the files
that use it.
2004-08-13 00:44:22 +00:00
Alexandre Julliard 48c4bb3c31 Get rid of the non-standard ICOM_VTABLE macro. 2004-08-12 23:00:51 +00:00
Mike Hearn 6545d994af Disconnect the server object from the stub on stub destruction. 2004-07-30 18:43:27 +00:00
Mike Hearn 3186bd2300 Make typelib marshaller safe for systems that don't allow executable
code on the heap, plug a leak of the assembly stub block.
2004-06-28 23:51:24 +00:00
Mike Hearn 86cc2d54c7 - Don't ERR on a used connection being destroyed.
- Don't print an extra newline in the olerelay code.
2004-06-23 00:10:29 +00:00
Mike Hearn d440ca4a89 Fix typelib marshaller relaying, add a comment describing what it is,
don't print the ugly L"" parts of Unicode strings in the relay trace.
2004-06-17 23:03:26 +00:00
Robert Shearman bc06d4ba8e - Fix ref count on standard proxy creation.
- Release channel buffer in StdMarshal_UnmarshalInterface, since we no
  longer use it and the proxy should have taken a reference on it.
- Add a few comments.
2004-06-14 17:58:03 +00:00
Ge van Geldorp 399901e054 Rename LARGE_INTEGER and ULARGE_INTEGER members "s" to "u" to conform
with PSDK.
2004-01-23 01:51:33 +00:00
Alexandre Julliard e8283089cb Get rid of no longer needed WINE_PACKED define. 2004-01-09 22:18:49 +00:00
Marcus Meissner 236ad0df3c Use correct pointer for SysFreeString. 2003-12-01 22:36:49 +00:00
Marcus Meissner 995389ef57 _nrroffuncs: Check for error before dereferencing returned pointer. 2003-09-22 19:21:32 +00:00
Alexandre Julliard e37c6e18d0 Fixed header dependencies to be fully compatible with the Windows
headers (with help from Dimitrie O. Paun).
2003-09-05 23:08:26 +00:00
Alexandre Julliard 864ca06832 winnls.h must not include winbase.h. 2003-08-20 18:22:31 +00:00
Francois Gouget f803e2a92d Fix miscellaneous spelling errors and typos. 2003-05-13 00:41:57 +00:00
Alexandre Julliard 150cd5a784 Avoid local WINAPI function pointers in _invoke. 2003-04-17 02:20:52 +00:00
Alexandre Julliard 43690e9e47 Removed no longer needed inclusion of heap.h. 2003-01-24 00:54:58 +00:00
Dimitrie O. Paun 297f3d898d Define NONAMELESS{STRUCT,UNION} explicitly in the files that need them. 2003-01-07 20:36:20 +00:00
Marcus Meissner 26ffca49a2 Reverted last VT_USERDEFINED patch (was broken).
Marshal TKIND_DISPATCH interfaces just like TKIND_INTERFACE.
2002-12-12 22:25:07 +00:00
Marcus Meissner 5f9e3ffdb9 Serialize/deserialize all reftypes in VT_USERDEFINED. 2002-12-12 02:15:46 +00:00
Ove Kaaven 1f5315c80f Make sure that no files except unknwn.h include wine/obj_base.h
directly.
2002-12-05 20:33:07 +00:00
Marcus Meissner d344849e4e Marshal VT_R4 (4 byte float). 2002-12-05 19:12:50 +00:00
Patrik Stridvall 9c1de6de30 Moved all the content of the DDK files ntdef.h and ntddk.h to
winternl.h.
2002-09-12 22:07:02 +00:00
Marcus Meissner 30f9da4b58 ITypelib::Invoke: Handle different length arguments better, we also
return 1 VARIANT only.
2002-06-20 22:45:08 +00:00
Marcus Meissner c18a6aa8fd Handle argsize for VT_DATE. 2002-06-14 00:36:42 +00:00
Marcus Meissner e81f10c97c Merged the two serializer and unserializer functions into one, cleaned
them up.
VT_PTR: Handle NULL pointers by sending a cookie.
Added support for: VT_CARRAY, VT_DISPATCH, TKIND_RECORD, VT_VOID,
VT_UI1, VT_UI2, VT_ERROR, VT_UI4, VT_UINT.
Added a custom serializer for DISPPARAMS struct.
2002-06-10 02:30:20 +00:00
Marcus Meissner fd625ddb0b Added marshalling of IUnknown. 2002-06-04 22:14:06 +00:00
Vincent Béron 9a62491660 Removed trailing whitespace. 2002-05-31 23:06:46 +00:00
Marcus Meissner 5b63cc22e8 BSTRs can be NULL, handle them seperately. 2002-05-06 20:12:11 +00:00
Alexandre Julliard 0799c1a780 Added LGPL standard comment, and copyright notices where necessary.
Global replacement of debugtools.h by wine/debug.h.
2002-03-09 23:29:33 +00:00
Marcus Meissner 0749fc2034 Implemented Local Server COM.
Implemented the Typelib based Marshaler.
2002-02-05 18:11:17 +00:00