Commit Graph

329 Commits

Author SHA1 Message Date
Dmitry Timoshkov 601bf6ea12 oleaut32: Make some data const and static. 2006-11-28 12:36:20 +01:00
Alex Villacís Lasso 64410e5907 oleaut32: typelib - fix regression in MSFT typelib parsing. 2006-11-09 10:44:13 +01:00
Francois Gouget 30e44c85c8 Assorted spelling fixes. 2006-11-07 15:25:24 +01:00
Rob Shearman 7f71545835 oleaut32: Update comments at the top of typelib.c and remove "stub" from several traces that are in implemented functions. 2006-10-27 11:59:50 +02:00
Rob Shearman 47bf80da8c oleaut32: Fix a crash in dump_DispParms when running the typelib test with debug tracing on. 2006-10-24 17:46:56 +02:00
Rob Shearman aa203f0919 oleaut32: Free the array subscript memory for type descriptions when freeing the typelib. 2006-10-24 17:46:49 +02:00
Rob Shearman a26af4861d oleaut32: Fix a reference count leak in CreateDispTypeInfo. 2006-10-24 17:46:34 +02:00
Rob Shearman d72ef78fa6 oleaut32: Initialise all members of the FUNCDESC structure in CreateDispTypeInfo. 2006-10-24 17:46:27 +02:00
Rob Shearman 053b6b21b6 oleaut32: Fix two more leaks on type info destruction. 2006-10-23 15:19:02 +02:00
Rob Shearman b5c78d0dff oleaut32: Rewrite MSFT_ReadName and MSFT_ReadString to need one less allocation and to fix a memory leak. 2006-10-23 15:18:56 +02:00
Rob Shearman b3d024a7bb oleaut32: Free allocated memory on typelib and typeinfo destruction. 2006-10-23 15:18:38 +02:00
Dmitry Timoshkov 20c40e0659 oleaut32: Make QueryPathOfRegTypeLib test pass under Wine. 2006-10-23 15:16:55 +02:00
Francois Gouget ef998ea6cb Assorted spelling fixes. 2006-10-16 11:33:38 +02:00
Michael Stefaniuc 15765dd953 The Data1 member of the GUID struct needs to be an unsigned int too for Win64 compatibility. 2006-10-16 10:53:04 +02:00
Hans Leidekker ce66f5d684 oleaut32: Win64 printf format warning fixes. 2006-10-13 12:08:47 +02:00
Huw Davies 03ec218326 oleaut32: Implement ITypeInfo_CreateInstance. 2006-10-09 20:38:41 +02:00
Robert Shearman dd70c0ae7c oleaut32: Fix ITypeInfo::GetFuncDesc to return the correct information for dual dispinterfaces. 2006-10-02 21:38:12 +02:00
Robert Shearman 65ca6a2f4d oleaut32: Make ITypeInfo::GetDocumentation work for functions/variables in inherited interfaces. 2006-10-02 21:38:07 +02:00
Andrew Talbot 0e9c97eba3 oleaut32: Cast-qual warnings fix. 2006-09-25 18:15:39 +02:00
Robert Shearman b7e88d8f8b oleaut32: Fix a leak of the module reference count. 2006-09-07 10:16:47 +02:00
Benjamin Arai d1282dce88 oleaut32: Add support for handling TKIND_COCLASS in userdefined_to_variantvt. 2006-08-22 12:00:01 +02:00
Stefan Siebert 9776f5b83f oleaut32: GetTypeInfoType - Return TYPE_E_ELEMENTNOTFOUND if index out of bounds. 2006-08-03 19:56:22 +02:00
Robert Shearman 40556ae08f oleaut32: Improve dump_DispParms. 2006-07-31 21:27:29 +02:00
Robert Shearman 33582cc69e oleaut32: Add some validation for the DISPPARAMS structure in ITypeInfo::Invoke. 2006-07-31 21:25:44 +02:00
Robert Shearman eb885a750f oleaut32: Initialize pRetVal in ITypeInfo::Invoke before calling VariantCopyInd
as native doesn't assume that it doesn't contain valid data.
2006-07-24 13:46:57 +02:00
Robert Shearman ad6b0dc281 oleaut32: Revert check for FUNCFLAG_FRESTRICTED in ITypeInfo::Invoke.
The change caused regressions in a number of applications and needs more 
study to see what the correct behaviour should be.
2006-07-18 11:12:35 +02:00
Robert Shearman 31f640274f oleaut32: Don't execute a function in ITypeInfo::Invoke if it has the FUNCFLAG_FRESTRICTED flag.
Add some more tests for ITypeInfo::Invoke.
2006-07-14 12:39:02 +02:00
Robert Shearman f9c9a2bf3d oleaut32: Convert void return types to the VT_EMPTY variant type in ITypeInfo::Invoke. 2006-07-13 16:26:19 +02:00
Robert Shearman 797bdbc2d9 oleaut32: Typelib interfaces with the FDUAL flag should also be registered,
since dispinterfaces don't have the FDISPATCHABLE flag.
2006-07-13 16:26:12 +02:00
Robert Shearman 688c6a78f1 oleaut32: MSFT_DoFuncs: "reclength" of the function information record is stored
in a 16 bit int and not in a 8 bit int as previously supposed, using a 0x1ff
mask. Upper 16 bits contains the ordinal number of the function. 
Allocation of the "recbuf" must be modified, to support larger data
(based on a patch by White Snake <whitesnake78@mail.com>).
2006-07-10 11:53:03 +02:00
Robert Shearman ef7b6e2740 oleaut32: ITypeComp_fnBind should do case-insensitive compares on the name passed in. 2006-07-07 13:31:43 +02:00
Robert Shearman dd677948b4 oleaut32: Fix the error code returned by ITypeComp on an interface when the name matches, but the flags don't. 2006-07-07 13:30:46 +02:00
Robert Shearman 65639ab722 oleaut: Implement processing of modules for SLTG typelibs.
Set funckind when processing SLTG functions.
2006-07-05 11:48:41 +02:00
Robert Shearman 3f97460c2b oleaut: Improve SLTG var support.
Pass both the start of the block and the offset to the first item into
SLTG_DoVars as they may be different.
Process 0xfffe offsets for variable names - this means to use the
previous name.
Add support for parsing the optional varflags field.
2006-07-05 11:48:29 +02:00
Robert Shearman 4b6b51ae99 oleaut: Fix function support for SLTG dispinterfaces. 2006-07-05 11:48:13 +02:00
Robert Shearman f2eb2d2309 oleaut: Move the processing of functions in SLTG typelibs into a
separate function and use it when processing dispinterfaces.
2006-07-05 11:48:03 +02:00
Robert Shearman 8a50262fdb oleaut: Move the initialisation of memidConstructor and
memidDestructor of type infos to the common ITypeInfo creation
function.

Remove the WARN message as this functionality isn't implemented in
native either.
2006-07-05 11:47:52 +02:00
Robert Shearman 92b468e810 oleaut: Process references for SLTG dispatch types. 2006-07-05 11:46:20 +02:00
Robert Shearman e4188e8846 oleaut: Abstract out the processing of variables in SLTG typelib components to a common function. 2006-07-05 11:46:07 +02:00
Robert Shearman bc6acf5c1d oleaut: Process references when parsing SLTG alias types. 2006-07-05 11:45:35 +02:00
Robert Shearman 23e089a09f oleaut: Rename SLTG_DoType to SLTG_DoElem and split out the common TYPEDESC generating code to SLTG_DoType.
Process SLTG alias types with SLTG_DoType as the data is stored in the
same format as in other components of the typelib.
2006-07-05 11:45:22 +02:00
Robert Shearman 663fb8bd56 oleaut: The SLTG_MemberHeader and SLTG_TypeInfoTail structures are
common to all elements, so move the processing of these from the
individual element processing.

Improve SLTG alias processing.
2006-07-05 11:45:08 +02:00
Robert Shearman 283049b8fc oleaut: Document some more members of SLTG_TypeInfoTail. 2006-07-05 11:44:33 +02:00
Robert Shearman 2fa3cc03a5 oleaut32: Fix a typo where the FIXME doesn't match the code. 2006-06-30 20:43:56 +02:00
Robert Shearman 166a91b12d oleaut32: RegisterTypeLib should register any interface that derives
from IDispatch rather than just dual interfaces.

This is hinted at, although not explicitly stated on MSDN, but was 
verified by tests with native oleaut32.
2006-06-29 14:40:01 +02:00
Juan Lang 24dd931a56 oleaut32: Handle bstr length of -1 in typelibs. 2006-06-28 16:53:28 +02:00
Alexandre Julliard 707060913c oleaut32: Use the standard DEFINE_OLEGUID macro to define GUIDs. 2006-06-09 21:09:35 +02:00
James Hawkins 585763ffa9 oleaut32: Only BYREF DispCallFunc args whose input args are not BYREF should be changed. 2006-06-06 11:46:14 +02:00
James Hawkins 0e5bd51d28 oleaut32: Copy BYREF args directly if they have the same variant type. 2006-06-06 11:46:03 +02:00
Robert Shearman 9c738061e0 oleaut32: Make sure to read the memid and the name offset from the
correct offsets, after the function data, so add cFuncs to the offsets
in MSFT_DoVars.

Resolve referenced types for variables.
Fixes initialisation of the dbgrid32 OCX.
2006-05-31 15:48:07 +02:00
Robert Shearman 983ad4accd oleaut32: Resolve referenced types for return values as well as parameters in MSFT typelibs. 2006-05-31 15:47:55 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Robert Shearman 6c6ce70260 oleaut32: Check the return value from VariantCopy when copying values
for VT_VARIANT typed parameters for ITypeInfo::Invoke.
2006-05-05 21:51:11 +02:00
Robert Shearman 5e8c877f96 oleaut32: Support values being passed into VT_VARIANT|VT_BYREF typed parameters in ITypeInfo::Invoke. 2006-05-05 21:50:58 +02:00
Mike McCormack e0276035a4 oleaut32: Remove unnecessary check for NULL. 2006-04-07 11:46:04 +02:00
Robert Shearman 11c83c5d5e oleaut32: Zero out parameter in LoadRegTypeLib in case of failure. 2006-03-30 12:43:38 +02:00
Robert Shearman 4b19449b6b oleaut: ITypeInfo::GetIDsOfNames should search inherited interfaces
regardless of what type they are.

Add a test for this and dump type infos created with CreateDispTypeInfo.
2006-03-21 20:02:11 +01:00
Robert Shearman 264b122d52 oleaut: Better support for invoking methods with VT_VARIANT argument types. 2006-03-21 16:19:06 +01:00
Robert Shearman 1ce38682fb oleaut32: Fix returning Typelib file name.
We can't use GetModuleFileName on a resource-only module, so the best
we can do is to copy the original name we used to find the type
library.  Fix a couple of places where we were incorrectly using the
file name, rather than the path.
2006-02-14 11:33:40 +01:00
Robert Shearman 265f042801 oleaut: Fix importing the IDispatch interface for TKIND_DISPATCH type infos.
Fix importing the IDispatch interface for TKIND_DISPATCH type infos
when the offset isn't specified. It should be fetched from the
dispatch offset stored in the header, rather than using a hack that
doesn't work.
2006-02-10 14:50:53 +01:00
Robert Shearman a633e22bdd oleaut: Make TLB_ReadTypeLib not rely on the signature of executables or dlls.
Try loading the dll first and then fall back to the regular file case.
Only call SearchPath for the regular file case since LoadLibraryEx
will do this for us and it previously excluded builtin dlls and
executables from having their type libraries opened.
2006-02-09 12:11:54 +01:00
Robert Shearman 19b6046e21 oleaut: Move the call to SearchPath inside of TLB_ReadTypeLib. 2006-02-09 12:11:01 +01:00
Robert Shearman 00ecbd05e8 oleaut: Revert incorrect patch changing the order of parameters passed
into DispCallFunc. A test with native indeed shows that the parameter
index increases from the leftmost parameter to the rightmost.
2006-02-09 12:10:26 +01:00
Huw Davies 7000aca824 oleaut32: Fixes and tests for CreateDispTypeInfo.
CreateDispTypeInfo returns the typeinfo of a coclass which implements
the described interface.
2006-02-06 20:57:09 +01:00
Huw Davies 16cc1858d0 ole: Initialize a few more funcdesc members in CreateDispTypeInfo. 2006-02-03 12:29:39 +01:00
Robert Shearman 61708da1c8 oleaut: Dump the pointer for VT_ARRAY/VT_VECTOR typed variants. 2006-01-31 12:21:27 +01:00
Robert Shearman be13d154c6 oleaut: Fix the order of parameters passed into DispCallFunc. 2006-01-30 14:55:57 +01:00
Robert Shearman 1f04fc6a49 oleaut: Handle a non-byref variant being passed for a byref param in
ITypeInfo::Invoke.
2006-01-16 20:44:13 +01:00
Robert Shearman d86f8d2ef2 oleaut: Only allocate memory once for each array needed for the
arguments in ITypeInfo::Invoke.
2006-01-16 20:43:55 +01:00
Robert Shearman 0f8db3feca oleaut: Simplify missing argument handling in ITypeInfo::Invoke.
Simplify missing argument handling by pre-allocating an array of the
maximum number of missing arguments there could be.
2006-01-16 20:43:20 +01:00
Robert Shearman 1616f81d00 oleaut: Add const attribute to iterators in get functions. 2006-01-14 17:48:12 +01:00
Robert Shearman 0b2c0d8365 oleaut: Initialise more fields in CreateDispTypeInfo.
Don't leave some of the fields of the TLBFuncDesc structure
uninitialised in CreateDispTypeInfo.
2006-01-14 17:47:36 +01:00
Robert Shearman 9227902714 oleaut: Support conversion of VT_SAFEARRAY into VT_ARRAY|type.
Typelib variant types that cannot be converted should return
DISP_E_BADVARTYPE.
Don't call DispCallFunc if conversion of one of the arguments failed.
2006-01-12 11:53:47 +01:00
Marcus Meissner cf173911a3 ole: ITypeInfo::Invoke stack overwrite fix.
Have enough stack space up to even VT_VARIANTs, fixes a stack
corruption.
2006-01-11 20:55:07 +01:00
Robert Shearman d2bdbd4ea5 ole: Remove the no longer used _copy_arg function. 2006-01-06 21:16:21 +01:00
Robert Shearman 8cf5373f60 ole: ITypeInfo::Invoke rewrite.
Re-implement ITypeInfo::Invoke on top of DispCallFunc and
VariantChangeType instead of _invoke and _copy_arg.
2006-01-06 21:15:48 +01:00
Mike McCormack 98ed3fa553 oleaut32: Output a FIXME message only once. 2006-01-06 12:16:58 +01:00
Dan Kegel d69366a171 oleaut32: Allow _invoke to handle up to 23 parameters. 2006-01-05 13:41:35 +01:00
Robert Shearman 83ff8560c3 ole: Store the result from _invoke in a VARIANTARG structure. 2006-01-05 12:18:54 +01:00
Mike McCormack 8193d97bfd oleaut32: Allow _invoke to handle up to 17 parameters. 2006-01-03 12:11:44 +01:00
Robert Shearman e6fa361967 oleaut: Small re-organisation of ITypeInfo::Invoke.
Only output the one function in the trace for ITypeInfo::Invoke.
Process the return value on output in ITypeInfo::Invoke, but only copy
it to pVarResult if pVarResult is not NULL.
2005-12-26 13:04:31 +01:00
Robert Shearman 6b97438011 oleaut32: Convert some tabs to spaces and some other formatting changes. 2005-12-26 13:04:02 +01:00
Robert Shearman fa49c971f1 oleaut32: Initialize member IDs to MEMBERID_NIL inITypeInfo::GetIDsOfNames.
Better tracing.
2005-12-26 13:03:27 +01:00
Robert Shearman 088fc70ede ole: Improve typelib traces.
Move the debug channel check from dump_TLBFuncDesc[One] to its callers
for more flexibility in which channel controls the output.
2005-12-26 13:02:47 +01:00
Robert Shearman 69aa9f9d2e OLE: Add const to several typelib functions.
Add const attributes to parameters for several functions and fix up
some formatting.
2005-12-12 11:52:23 +01:00
Robert Shearman a056a9a89c OLE: Implement undocumented behaviour in DispCallFunc.
Fix DispCallFunc to work with MSDN-undocumented behaviour used by
Office 2003 and document the function.
2005-12-06 21:25:51 +01:00
Robert Shearman 1f68feeef1 OLE: Implement ITypeInfo_AddressOfMember. 2005-12-06 21:24:45 +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
Robert Shearman 806cdce355 OLE: Update the type of the oVft parameter for DispCallFunc. 2005-12-06 21:23:09 +01:00
Robert Shearman 3dd7ba394c OLE: ITypeInfo_Invoke parameter naming change.
Rename the dwFlags parameter of ITypeInfo_Invoke since it is not a
DWORD, but an unsigned short.
2005-12-06 10:57:45 +01:00
Robert Shearman 190d05f4db OLE: Support HREFTYPEs For ITypeInfos
Add support for reading the hreftype of a typeinfo, return it to the
application in ITypeComp_Bind for the DESKIND_APPOBJECT case and
support referencing it in ITypeInfo_GetRefTypeInfo.
2005-12-03 18:20:27 +01:00
Robert Shearman d8d1693def OLE: fix function name loading
Correctly get the name of the second function of a propget/propput
pair in MSFT typelibs when the name offset is set to -1.
2005-12-03 18:20:03 +01:00
Robert Shearman bd8fefd66b OLE: fix invoking dispinterface functions
Fix invoking dispinterface functions by using the internal
representation of the function, not the one returned to applications.
2005-12-03 18:19:17 +01:00
Robert Shearman d48f6f3682 OLE: Move the dispinterface return value handling to functions that
return the FUNCDESC to the user.
2005-12-03 18:10:30 +01:00
Robert Shearman a61e4e802c OLE: fix handling of INVOKE_PROPERTYGET flag in ITypeComp_fnBind.
The INVOKE_PROPERTYGET flag shouldn't affect binding to variables; it
should just affect which of a pair of [propget] and [propput]
functions should be returned.
2005-12-03 18:03:29 +01:00
Robert Shearman cc9052c38e Make dump functions const. 2005-12-01 12:55:31 +01:00
Robert Shearman 695556af16 Remove broken return value handling code and that would reference
memory beyond the end of the arguments array. Replace it with code
that properly handles referencing the return type and setting the
return type to VT_VOID when a dispinterface function doesn't have any
return value.
2005-12-01 12:48:56 +01:00
Robert Shearman 960aadaceb Introduce a variable "elemdesc" to eliminate some long common
expressions.
Move the contents of the second arguments loop inside the first.
Move the MSFT_ReadLEDWords so that it is the last statement in the
loop since it is one of the iterators.
2005-12-01 12:34:39 +01:00
Robert Shearman 48e1a72a23 Don't truncate large integer constants. 2005-12-01 11:37:11 +01:00
Robert Shearman 55ffe637db The pparamdescex of an ELEMDESC should only be copied if wParamFlags &
PARAMFLAG_DHASDEFAULT.
Make ITypeInfo_ReleaseVarDesc use TLB_FreeElemDesc.
2005-12-01 11:12:07 +01:00