Update -- Oleaut32 and VB5
Marcus Meissner
marcus at jet.franken.de
Sat May 17 03:08:23 CDT 2003
On Wed, May 07, 2003 at 03:15:59PM +0200, erwin wolff wrote:
> --update for previous message
>
> While visual Basic can install and start and edit a project,
> it cannot compile with a fake native configuration. The error from
> winedbg:
>
> { __wine_unimplemented("SafeArrayCreateEx"); }
>
> This is too bad :(. But hey, At least the VB5 IDE runs perfectly!
Can you try this patch and report how it works?
Ciao, Marcus
Index: oleaut32.spec
===================================================================
RCS file: /home/wine/wine/dlls/oleaut32/oleaut32.spec,v
retrieving revision 1.54
diff -u -r1.54 oleaut32.spec
--- oleaut32.spec 15 May 2003 22:58:48 -0000 1.54
+++ oleaut32.spec 17 May 2003 08:01:26 -0000
@@ -39,7 +39,7 @@
39 stdcall SafeArrayDestroyData(ptr)
40 stdcall SafeArrayRedim(ptr ptr)
41 stdcall SafeArrayAllocDescriptorEx(long long ptr)
-42 stub SafeArrayCreateEx
+42 stdcall SafeArrayCreateEx(long long ptr ptr)
43 stub SafeArrayCreateVectorEx
44 stdcall SafeArraySetRecordInfo(ptr ptr)
45 stdcall SafeArrayGetRecordInfo(ptr ptr)
Index: safearray.c
===================================================================
RCS file: /home/wine/wine/dlls/oleaut32/safearray.c,v
retrieving revision 1.23
diff -u -r1.23 safearray.c
--- safearray.c 23 Jan 2003 21:32:36 -0000 1.23
+++ safearray.c 17 May 2003 08:01:27 -0000
@@ -253,10 +253,11 @@
* SafeArrayCreate (OLEAUT32.15)
* Create a SafeArray object by encapsulating AllocDescriptor and AllocData
*/
-SAFEARRAY* WINAPI SafeArrayCreate(
+SAFEARRAY* WINAPI SafeArrayCreateEx(
VARTYPE vt,
UINT cDims,
- SAFEARRAYBOUND *rgsabound)
+ SAFEARRAYBOUND *rgsabound,
+ PVOID pvExtra)
{
SAFEARRAY *psa;
HRESULT hRes;
@@ -280,6 +281,21 @@
case VT_VARIANT: psa->fFeatures |= FADF_VARIANT;break;
default: break;
}
+ if (pvExtra) {
+ switch (vt) {
+ case VT_UNKNOWN:
+ case VT_DISPATCH:
+ psa->fFeatures |= FADF_HAVEIID;
+ SafeArraySetIID(psa, (REFIID)pvExtra);
+ break;
+ case VT_RECORD:
+ psa->fFeatures |= FADF_RECORD;
+ SafeArraySetRecordInfo(psa, (IRecordInfo*)pvExtra);
+ break;
+ default: /* vartype is already set bu allocdescriptorex */
+ break;
+ }
+ }
psa->cLocks = 0;
psa->pvData = NULL;
psa->cbElements= VARTYPE_SIZE[vt];
@@ -298,6 +314,18 @@
}
return(psa);
+}
+
+/*************************************************************************
+ * SafeArrayCreate (OLEAUT32.15)
+ * Create a SafeArray object by encapsulating AllocDescriptor and AllocData
+ */
+SAFEARRAY* WINAPI SafeArrayCreate(
+ VARTYPE vt,
+ UINT cDims,
+ SAFEARRAYBOUND *rgsabound
+) {
+ return SafeArrayCreateEx(vt, cDims, rgsabound, NULL);
}
/*************************************************************************
More information about the wine-devel
mailing list