mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
[OLEAUT32] Sync with Wine Staging 4.18. CORE-16441
This commit is contained in:
parent
1431ca4c75
commit
ae24453e12
12 changed files with 763 additions and 671 deletions
|
@ -19,8 +19,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
|
|
|
@ -18,8 +18,6 @@
|
|||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
@ -41,7 +39,6 @@
|
|||
#include "oleaut32_oaidl.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
#include "wine/unicode.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(ole);
|
||||
WINE_DECLARE_DEBUG_CHANNEL(heap);
|
||||
|
@ -877,7 +874,7 @@ static HRESULT reg_get_typelib_module(REFIID iid, WCHAR *module, DWORD len)
|
|||
sprintf(typelibkey, "Typelib\\%s\\%s\\0\\win%u", tlguid, ver, sizeof(void *) == 8 ? 64 : 32);
|
||||
#else
|
||||
snprintf(typelibkey, sizeof(typelibkey), "Typelib\\%s\\%s\\0\\win%u", tlguid, ver, sizeof(void *) == 8 ? 64 : 32);
|
||||
#endif // __REACTOS__
|
||||
#endif /* __REACTOS__ */
|
||||
tlfnlen = sizeof(tlfn);
|
||||
if (RegQueryValueA(HKEY_CLASSES_ROOT, typelibkey, tlfn, &tlfnlen))
|
||||
{
|
||||
|
@ -927,7 +924,7 @@ static HRESULT get_typeinfo_for_iid(REFIID iid, ITypeInfo **typeinfo)
|
|||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI typelib_ps_QueryInterface(IPSFactoryBuffer *iface, REFIID iid, void **out)
|
||||
static HRESULT WINAPI dispatch_typelib_ps_QueryInterface(IPSFactoryBuffer *iface, REFIID iid, void **out)
|
||||
{
|
||||
if (IsEqualIID(iid, &IID_IPSFactoryBuffer) || IsEqualIID(iid, &IID_IUnknown))
|
||||
{
|
||||
|
@ -940,136 +937,122 @@ static HRESULT WINAPI typelib_ps_QueryInterface(IPSFactoryBuffer *iface, REFIID
|
|||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI typelib_ps_AddRef(IPSFactoryBuffer *iface)
|
||||
static ULONG WINAPI dispatch_typelib_ps_AddRef(IPSFactoryBuffer *iface)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
static ULONG WINAPI typelib_ps_Release(IPSFactoryBuffer *iface)
|
||||
static ULONG WINAPI dispatch_typelib_ps_Release(IPSFactoryBuffer *iface)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI typelib_ps_CreateProxy(IPSFactoryBuffer *iface,
|
||||
static HRESULT dispatch_create_proxy(IUnknown *outer, IRpcProxyBuffer **proxy, void **out)
|
||||
{
|
||||
IPSFactoryBuffer *factory;
|
||||
HRESULT hr;
|
||||
|
||||
hr = OLEAUTPS_DllGetClassObject(&CLSID_PSFactoryBuffer, &IID_IPSFactoryBuffer, (void **)&factory);
|
||||
if (FAILED(hr)) return hr;
|
||||
|
||||
hr = IPSFactoryBuffer_CreateProxy(factory, outer, &IID_IDispatch, proxy, out);
|
||||
IPSFactoryBuffer_Release(factory);
|
||||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI dispatch_typelib_ps_CreateProxy(IPSFactoryBuffer *iface,
|
||||
IUnknown *outer, REFIID iid, IRpcProxyBuffer **proxy, void **out)
|
||||
{
|
||||
ITypeInfo *typeinfo;
|
||||
TYPEATTR *attr;
|
||||
HRESULT hr;
|
||||
|
||||
if (IsEqualGUID(iid, &IID_IDispatch))
|
||||
return dispatch_create_proxy(outer, proxy, out);
|
||||
|
||||
hr = get_typeinfo_for_iid(iid, &typeinfo);
|
||||
if (FAILED(hr)) return hr;
|
||||
|
||||
hr = CreateProxyFromTypeInfo(typeinfo, outer, iid, proxy, out);
|
||||
hr = ITypeInfo_GetTypeAttr(typeinfo, &attr);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
ITypeInfo_Release(typeinfo);
|
||||
return hr;
|
||||
}
|
||||
|
||||
if (attr->typekind == TKIND_INTERFACE || (attr->wTypeFlags & TYPEFLAG_FDUAL))
|
||||
hr = CreateProxyFromTypeInfo(typeinfo, outer, iid, proxy, out);
|
||||
else
|
||||
hr = dispatch_create_proxy(outer, proxy, out);
|
||||
|
||||
if (FAILED(hr))
|
||||
ERR("Failed to create proxy, hr %#x.\n", hr);
|
||||
|
||||
ITypeInfo_ReleaseTypeAttr(typeinfo, attr);
|
||||
ITypeInfo_Release(typeinfo);
|
||||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI typelib_ps_CreateStub(IPSFactoryBuffer *iface, REFIID iid,
|
||||
IUnknown *server, IRpcStubBuffer **stub)
|
||||
static HRESULT dispatch_create_stub(IUnknown *server, IRpcStubBuffer **stub)
|
||||
{
|
||||
IPSFactoryBuffer *factory;
|
||||
HRESULT hr;
|
||||
|
||||
hr = OLEAUTPS_DllGetClassObject(&CLSID_PSFactoryBuffer, &IID_IPSFactoryBuffer, (void **)&factory);
|
||||
if (FAILED(hr)) return hr;
|
||||
|
||||
hr = IPSFactoryBuffer_CreateStub(factory, &IID_IDispatch, server, stub);
|
||||
IPSFactoryBuffer_Release(factory);
|
||||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI dispatch_typelib_ps_CreateStub(IPSFactoryBuffer *iface,
|
||||
REFIID iid, IUnknown *server, IRpcStubBuffer **stub)
|
||||
{
|
||||
ITypeInfo *typeinfo;
|
||||
TYPEATTR *attr;
|
||||
HRESULT hr;
|
||||
|
||||
if (IsEqualGUID(iid, &IID_IDispatch))
|
||||
return dispatch_create_stub(server, stub);
|
||||
|
||||
hr = get_typeinfo_for_iid(iid, &typeinfo);
|
||||
if (FAILED(hr)) return hr;
|
||||
|
||||
hr = CreateStubFromTypeInfo(typeinfo, iid, server, stub);
|
||||
hr = ITypeInfo_GetTypeAttr(typeinfo, &attr);
|
||||
if (FAILED(hr))
|
||||
ERR("Failed to create stub, hr %#x.\n", hr);
|
||||
{
|
||||
ITypeInfo_Release(typeinfo);
|
||||
return hr;
|
||||
}
|
||||
|
||||
if (attr->typekind == TKIND_INTERFACE || (attr->wTypeFlags & TYPEFLAG_FDUAL))
|
||||
hr = CreateStubFromTypeInfo(typeinfo, iid, server, stub);
|
||||
else
|
||||
hr = dispatch_create_stub(server, stub);
|
||||
|
||||
if (FAILED(hr))
|
||||
ERR("Failed to create proxy, hr %#x.\n", hr);
|
||||
|
||||
ITypeInfo_ReleaseTypeAttr(typeinfo, attr);
|
||||
ITypeInfo_Release(typeinfo);
|
||||
return hr;
|
||||
}
|
||||
|
||||
static const IPSFactoryBufferVtbl typelib_ps_vtbl =
|
||||
static const IPSFactoryBufferVtbl dispatch_typelib_ps_vtbl =
|
||||
{
|
||||
typelib_ps_QueryInterface,
|
||||
typelib_ps_AddRef,
|
||||
typelib_ps_Release,
|
||||
typelib_ps_CreateProxy,
|
||||
typelib_ps_CreateStub,
|
||||
dispatch_typelib_ps_QueryInterface,
|
||||
dispatch_typelib_ps_AddRef,
|
||||
dispatch_typelib_ps_Release,
|
||||
dispatch_typelib_ps_CreateProxy,
|
||||
dispatch_typelib_ps_CreateStub,
|
||||
};
|
||||
|
||||
static IPSFactoryBuffer typelib_ps = { &typelib_ps_vtbl };
|
||||
static IPSFactoryBuffer dispatch_typelib_ps = { &dispatch_typelib_ps_vtbl };
|
||||
|
||||
extern void _get_STDFONT_CF(LPVOID *);
|
||||
extern void _get_STDPIC_CF(LPVOID *);
|
||||
|
||||
static HRESULT WINAPI PSDispatchFacBuf_QueryInterface(IPSFactoryBuffer *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
if (IsEqualIID(riid, &IID_IUnknown) ||
|
||||
IsEqualIID(riid, &IID_IPSFactoryBuffer))
|
||||
{
|
||||
IPSFactoryBuffer_AddRef(iface);
|
||||
*ppv = iface;
|
||||
return S_OK;
|
||||
}
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI PSDispatchFacBuf_AddRef(IPSFactoryBuffer *iface)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
static ULONG WINAPI PSDispatchFacBuf_Release(IPSFactoryBuffer *iface)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI PSDispatchFacBuf_CreateProxy(IPSFactoryBuffer *iface,
|
||||
IUnknown *outer, REFIID iid, IRpcProxyBuffer **proxy, void **obj)
|
||||
{
|
||||
IPSFactoryBuffer *factory;
|
||||
HRESULT hr;
|
||||
|
||||
if (IsEqualIID(iid, &IID_IDispatch))
|
||||
{
|
||||
hr = OLEAUTPS_DllGetClassObject(&CLSID_PSFactoryBuffer, &IID_IPSFactoryBuffer, (void **)&factory);
|
||||
if (FAILED(hr)) return hr;
|
||||
|
||||
hr = IPSFactoryBuffer_CreateProxy(factory, outer, iid, proxy, obj);
|
||||
IPSFactoryBuffer_Release(factory);
|
||||
return hr;
|
||||
}
|
||||
else
|
||||
return IPSFactoryBuffer_CreateProxy(&typelib_ps, outer, iid, proxy, obj);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI PSDispatchFacBuf_CreateStub(IPSFactoryBuffer *iface,
|
||||
REFIID iid, IUnknown *server, IRpcStubBuffer **stub)
|
||||
{
|
||||
IPSFactoryBuffer *factory;
|
||||
HRESULT hr;
|
||||
|
||||
if (IsEqualIID(iid, &IID_IDispatch))
|
||||
{
|
||||
hr = OLEAUTPS_DllGetClassObject(&CLSID_PSFactoryBuffer, &IID_IPSFactoryBuffer, (void **)&factory);
|
||||
if (FAILED(hr)) return hr;
|
||||
|
||||
hr = IPSFactoryBuffer_CreateStub(factory, iid, server, stub);
|
||||
IPSFactoryBuffer_Release(factory);
|
||||
return hr;
|
||||
}
|
||||
else
|
||||
return IPSFactoryBuffer_CreateStub(&typelib_ps, iid, server, stub);
|
||||
}
|
||||
|
||||
static const IPSFactoryBufferVtbl PSDispatchFacBuf_Vtbl =
|
||||
{
|
||||
PSDispatchFacBuf_QueryInterface,
|
||||
PSDispatchFacBuf_AddRef,
|
||||
PSDispatchFacBuf_Release,
|
||||
PSDispatchFacBuf_CreateProxy,
|
||||
PSDispatchFacBuf_CreateStub
|
||||
};
|
||||
|
||||
/* This is the whole PSFactoryBuffer object, just the vtableptr */
|
||||
static const IPSFactoryBufferVtbl *pPSDispatchFacBuf = &PSDispatchFacBuf_Vtbl;
|
||||
|
||||
/***********************************************************************
|
||||
* DllGetClassObject (OLEAUT32.@)
|
||||
*/
|
||||
|
@ -1090,14 +1073,9 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv)
|
|||
return S_OK;
|
||||
}
|
||||
}
|
||||
if (IsEqualCLSID(rclsid, &CLSID_PSDispatch) && IsEqualIID(iid, &IID_IPSFactoryBuffer)) {
|
||||
*ppv = &pPSDispatchFacBuf;
|
||||
IPSFactoryBuffer_AddRef((IPSFactoryBuffer *)*ppv);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
if (IsEqualGUID(rclsid, &CLSID_PSOAInterface))
|
||||
return IPSFactoryBuffer_QueryInterface(&typelib_ps, iid, ppv);
|
||||
if (IsEqualGUID(rclsid, &CLSID_PSDispatch) || IsEqualGUID(rclsid, &CLSID_PSOAInterface))
|
||||
return IPSFactoryBuffer_QueryInterface(&dispatch_typelib_ps, iid, ppv);
|
||||
|
||||
if (IsEqualCLSID(rclsid, &CLSID_PSTypeComp) ||
|
||||
IsEqualCLSID(rclsid, &CLSID_PSTypeInfo) ||
|
||||
|
|
|
@ -35,7 +35,6 @@
|
|||
#include "wingdi.h"
|
||||
#include "winuser.h"
|
||||
#include "wine/list.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "objbase.h"
|
||||
#include "oleauto.h" /* for SysAllocString(....) */
|
||||
#include "ole2.h"
|
||||
|
@ -230,7 +229,7 @@ static HRESULT dec_ext_ref(HFONT hfont)
|
|||
static WCHAR *strdupW(const WCHAR* str)
|
||||
{
|
||||
WCHAR *ret;
|
||||
DWORD size = (strlenW(str) + 1) * sizeof(WCHAR);
|
||||
DWORD size = (lstrlenW(str) + 1) * sizeof(WCHAR);
|
||||
|
||||
ret = HeapAlloc(GetProcessHeap(), 0, size);
|
||||
if(ret)
|
||||
|
@ -1063,8 +1062,8 @@ static HRESULT WINAPI OLEFontImpl_IsEqual(
|
|||
return S_FALSE;
|
||||
|
||||
/* Check from string */
|
||||
left_len = strlenW(left->description.lpstrName);
|
||||
right_len = strlenW(right->description.lpstrName);
|
||||
left_len = lstrlenW(left->description.lpstrName);
|
||||
right_len = lstrlenW(right->description.lpstrName);
|
||||
ret = CompareStringW(0,0,left->description.lpstrName, left_len,
|
||||
right->description.lpstrName, right_len);
|
||||
if (ret != CSTR_EQUAL)
|
||||
|
@ -1727,7 +1726,7 @@ static HRESULT WINAPI OLEFontImpl_Save(
|
|||
/* FontName */
|
||||
if (this->description.lpstrName)
|
||||
string_size = WideCharToMultiByte( CP_ACP, 0, this->description.lpstrName,
|
||||
strlenW(this->description.lpstrName), NULL, 0, NULL, NULL );
|
||||
lstrlenW(this->description.lpstrName), NULL, 0, NULL, NULL );
|
||||
else
|
||||
string_size = 0;
|
||||
|
||||
|
@ -1738,7 +1737,7 @@ static HRESULT WINAPI OLEFontImpl_Save(
|
|||
{
|
||||
if (!(writeBuffer = HeapAlloc( GetProcessHeap(), 0, string_size ))) return E_OUTOFMEMORY;
|
||||
WideCharToMultiByte( CP_ACP, 0, this->description.lpstrName,
|
||||
strlenW(this->description.lpstrName),
|
||||
lstrlenW(this->description.lpstrName),
|
||||
writeBuffer, string_size, NULL, NULL );
|
||||
|
||||
IStream_Write(pOutStream, writeBuffer, string_size, &written);
|
||||
|
@ -1774,7 +1773,7 @@ static HRESULT WINAPI OLEFontImpl_GetSizeMax(
|
|||
|
||||
if (this->description.lpstrName!=0)
|
||||
pcbSize->u.LowPart += WideCharToMultiByte( CP_ACP, 0, this->description.lpstrName,
|
||||
strlenW(this->description.lpstrName),
|
||||
lstrlenW(this->description.lpstrName),
|
||||
NULL, 0, NULL, NULL );
|
||||
|
||||
return S_OK;
|
||||
|
|
|
@ -36,12 +36,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "wine/port.h"
|
||||
|
||||
#ifdef HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
@ -62,8 +56,6 @@
|
|||
#include "initguid.h"
|
||||
#include "wincodec.h"
|
||||
#include "wine/debug.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "wine/library.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(olepicture);
|
||||
|
||||
|
@ -2522,7 +2514,7 @@ HRESULT WINAPI OleLoadPicturePath( LPOLESTR szURLorPath, LPUNKNOWN punkCaller,
|
|||
*ppvRet = NULL;
|
||||
|
||||
/* Convert file URLs to DOS paths. */
|
||||
if (strncmpW(szURLorPath, file, 5) == 0) {
|
||||
if (wcsncmp(szURLorPath, file, 5) == 0) {
|
||||
DWORD size;
|
||||
hRes = CoInternetParseUrl(szURLorPath, PARSE_PATH_FROM_URL, 0, path_buf,
|
||||
ARRAY_SIZE(path_buf), &size, 0);
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
#ifndef _OLEAUT32_PCH_
|
||||
#define _OLEAUT32_PCH_
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
@ -18,12 +16,12 @@
|
|||
#include <winbase.h>
|
||||
#include <wingdi.h>
|
||||
#include <winreg.h>
|
||||
#include <winnls.h>
|
||||
#include <ole2.h>
|
||||
#include <olectl.h>
|
||||
|
||||
#include <wine/debug.h>
|
||||
#include <wine/list.h>
|
||||
#include <wine/unicode.h>
|
||||
|
||||
#include "connpt.h"
|
||||
#include "variant.h"
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
#include "oleauto.h"
|
||||
#include "variant.h"
|
||||
|
||||
#include "wine/unicode.h"
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(ole);
|
||||
|
@ -402,7 +401,7 @@ static HRESULT WINAPI IRecordInfoImpl_GetField(IRecordInfo *iface, PVOID pvData,
|
|||
return E_INVALIDARG;
|
||||
|
||||
for(i=0; i<This->n_vars; i++)
|
||||
if(!strcmpW(This->fields[i].name, szFieldName))
|
||||
if(!wcscmp(This->fields[i].name, szFieldName))
|
||||
break;
|
||||
if(i == This->n_vars)
|
||||
return TYPE_E_FIELDNOTFOUND;
|
||||
|
@ -424,7 +423,7 @@ static HRESULT WINAPI IRecordInfoImpl_GetFieldNoCopy(IRecordInfo *iface, PVOID p
|
|||
return E_INVALIDARG;
|
||||
|
||||
for(i=0; i<This->n_vars; i++)
|
||||
if(!strcmpW(This->fields[i].name, szFieldName))
|
||||
if(!wcscmp(This->fields[i].name, szFieldName))
|
||||
break;
|
||||
if(i == This->n_vars)
|
||||
return TYPE_E_FIELDNOTFOUND;
|
||||
|
@ -455,7 +454,7 @@ static HRESULT WINAPI IRecordInfoImpl_PutField(IRecordInfo *iface, ULONG wFlags,
|
|||
}
|
||||
|
||||
for(i=0; i<This->n_vars; i++)
|
||||
if(!strcmpW(This->fields[i].name, szFieldName))
|
||||
if(!wcscmp(This->fields[i].name, szFieldName))
|
||||
break;
|
||||
if(i == This->n_vars)
|
||||
return TYPE_E_FIELDNOTFOUND;
|
||||
|
@ -477,7 +476,7 @@ static HRESULT WINAPI IRecordInfoImpl_PutFieldNoCopy(IRecordInfo *iface, ULONG w
|
|||
return E_INVALIDARG;
|
||||
|
||||
for(i=0; i<This->n_vars; i++)
|
||||
if(!strcmpW(This->fields[i].name, szFieldName))
|
||||
if(!wcscmp(This->fields[i].name, szFieldName))
|
||||
break;
|
||||
if(i == This->n_vars)
|
||||
return TYPE_E_FIELDNOTFOUND;
|
||||
|
|
|
@ -31,8 +31,6 @@
|
|||
* 0x10: SAFEARRAYBOUNDS[0...]
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
@ -525,8 +523,8 @@ HRESULT WINAPI SafeArrayAllocDescriptorEx(VARTYPE vt, UINT cDims, SAFEARRAY **pp
|
|||
ULONG cbElements;
|
||||
HRESULT hRet;
|
||||
|
||||
TRACE("(%d->%s,%d,%p)\n", vt, debugstr_vt(vt), cDims, ppsaOut);
|
||||
|
||||
TRACE("(%s,%u,%p)\n", debugstr_vt(vt), cDims, ppsaOut);
|
||||
|
||||
cbElements = SAFEARRAY_GetVTSize(vt);
|
||||
if (!cbElements)
|
||||
WARN("Creating a descriptor with an invalid VARTYPE!\n");
|
||||
|
@ -601,7 +599,7 @@ HRESULT WINAPI SafeArrayAllocData(SAFEARRAY *psa)
|
|||
*/
|
||||
SAFEARRAY* WINAPI SafeArrayCreate(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound)
|
||||
{
|
||||
TRACE("(%d->%s,%d,%p)\n", vt, debugstr_vt(vt), cDims, rgsabound);
|
||||
TRACE("(%s,%u,%p)\n", debugstr_vt(vt), cDims, rgsabound);
|
||||
|
||||
if (vt == VT_RECORD)
|
||||
return NULL;
|
||||
|
@ -633,7 +631,7 @@ SAFEARRAY* WINAPI SafeArrayCreateEx(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsa
|
|||
IRecordInfo* iRecInfo = pvExtra;
|
||||
SAFEARRAY* psa;
|
||||
|
||||
TRACE("(%d->%s,%d,%p,%p)\n", vt, debugstr_vt(vt), cDims, rgsabound, pvExtra);
|
||||
TRACE("(%s,%u,%p,%p)\n", debugstr_vt(vt), cDims, rgsabound, pvExtra);
|
||||
|
||||
if (vt == VT_RECORD)
|
||||
{
|
||||
|
@ -678,8 +676,8 @@ SAFEARRAY* WINAPI SafeArrayCreateEx(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsa
|
|||
*/
|
||||
SAFEARRAY* WINAPI SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements)
|
||||
{
|
||||
TRACE("(%d->%s,%d,%d\n", vt, debugstr_vt(vt), lLbound, cElements);
|
||||
|
||||
TRACE("(%s,%d,%u)\n", debugstr_vt(vt), lLbound, cElements);
|
||||
|
||||
if (vt == VT_RECORD)
|
||||
return NULL;
|
||||
|
||||
|
@ -710,8 +708,8 @@ SAFEARRAY* WINAPI SafeArrayCreateVectorEx(VARTYPE vt, LONG lLbound, ULONG cEleme
|
|||
IRecordInfo* iRecInfo = pvExtra;
|
||||
SAFEARRAY* psa;
|
||||
|
||||
TRACE("(%d->%s,%d,%d,%p\n", vt, debugstr_vt(vt), lLbound, cElements, pvExtra);
|
||||
|
||||
TRACE("(%s,%d,%u,%p)\n", debugstr_vt(vt), lLbound, cElements, pvExtra);
|
||||
|
||||
if (vt == VT_RECORD)
|
||||
{
|
||||
if (!iRecInfo)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -25,8 +25,6 @@
|
|||
* Please submit a test case if you find a difference.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
|
@ -34,7 +32,6 @@
|
|||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "winerror.h"
|
||||
#include "variant.h"
|
||||
#include "wine/debug.h"
|
||||
|
@ -438,9 +435,9 @@ static const NAMED_FORMAT VARIANT_NamedFormats[] =
|
|||
};
|
||||
typedef const NAMED_FORMAT *LPCNAMED_FORMAT;
|
||||
|
||||
static int FormatCompareFn(const void *l, const void *r)
|
||||
static int __cdecl FormatCompareFn(const void *l, const void *r)
|
||||
{
|
||||
return strcmpiW(((LPCNAMED_FORMAT)l)->name, ((LPCNAMED_FORMAT)r)->name);
|
||||
return wcsicmp(((LPCNAMED_FORMAT)l)->name, ((LPCNAMED_FORMAT)r)->name);
|
||||
}
|
||||
|
||||
static inline const BYTE *VARIANT_GetNamedFormat(LPCWSTR lpszFormat)
|
||||
|
@ -763,7 +760,7 @@ HRESULT WINAPI VarTokenizeFormatString(LPOLESTR lpszFormat, LPBYTE rgbTok,
|
|||
TRACE("time sep\n");
|
||||
}
|
||||
else if ((*pFormat == 'a' || *pFormat == 'A') &&
|
||||
!strncmpiW(pFormat, szAMPM, ARRAY_SIZE(szAMPM)))
|
||||
!_wcsnicmp(pFormat, szAMPM, ARRAY_SIZE(szAMPM)))
|
||||
{
|
||||
/* Date formats: System AM/PM designation
|
||||
* Other formats: Literal
|
||||
|
@ -772,7 +769,7 @@ HRESULT WINAPI VarTokenizeFormatString(LPOLESTR lpszFormat, LPBYTE rgbTok,
|
|||
header->type = FMT_TYPE_DATE;
|
||||
NEED_SPACE(sizeof(BYTE));
|
||||
pFormat += ARRAY_SIZE(szAMPM);
|
||||
if (!strncmpW(pFormat, szampm, ARRAY_SIZE(szampm)))
|
||||
if (!wcsncmp(pFormat, szampm, ARRAY_SIZE(szampm)))
|
||||
*pOut++ = FMT_DATE_AMPM_SYS2;
|
||||
else
|
||||
*pOut++ = FMT_DATE_AMPM_SYS1;
|
||||
|
@ -810,7 +807,7 @@ HRESULT WINAPI VarTokenizeFormatString(LPOLESTR lpszFormat, LPBYTE rgbTok,
|
|||
*pLastHours = *pLastHours + 2;
|
||||
TRACE("A/P\n");
|
||||
}
|
||||
else if (*pFormat == 'a' && !strncmpW(pFormat, szamSlashpm, ARRAY_SIZE(szamSlashpm)))
|
||||
else if (*pFormat == 'a' && !wcsncmp(pFormat, szamSlashpm, ARRAY_SIZE(szamSlashpm)))
|
||||
{
|
||||
/* Date formats: lowercase AM or PM designation
|
||||
* Other formats: Literal
|
||||
|
@ -824,7 +821,7 @@ HRESULT WINAPI VarTokenizeFormatString(LPOLESTR lpszFormat, LPBYTE rgbTok,
|
|||
*pLastHours = *pLastHours + 2;
|
||||
TRACE("AM/PM\n");
|
||||
}
|
||||
else if (*pFormat == 'A' && !strncmpW(pFormat, szAMSlashPM, ARRAY_SIZE(szAMSlashPM)))
|
||||
else if (*pFormat == 'A' && !wcsncmp(pFormat, szAMSlashPM, ARRAY_SIZE(szAMSlashPM)))
|
||||
{
|
||||
/* Date formats: Uppercase AM or PM designation
|
||||
* Other formats: Literal
|
||||
|
@ -986,7 +983,7 @@ HRESULT WINAPI VarTokenizeFormatString(LPOLESTR lpszFormat, LPBYTE rgbTok,
|
|||
fmt_state &= ~FMT_STATE_OPEN_COPY;
|
||||
}
|
||||
else if ((*pFormat == 't' || *pFormat == 'T') &&
|
||||
!strncmpiW(pFormat, szTTTTT, ARRAY_SIZE(szTTTTT)))
|
||||
!_wcsnicmp(pFormat, szTTTTT, ARRAY_SIZE(szTTTTT)))
|
||||
{
|
||||
/* Date formats: System time specifier
|
||||
* Other formats: Literal
|
||||
|
@ -1376,7 +1373,7 @@ VARIANT_FormatNumber_Bool:
|
|||
hRes = VarBstrFromBool(V_BOOL(&vBool), lcid, boolFlag, &boolStr);
|
||||
if (SUCCEEDED(hRes))
|
||||
{
|
||||
strcpyW(pBuff, boolStr);
|
||||
lstrcpyW(pBuff, boolStr);
|
||||
SysFreeString(boolStr);
|
||||
while (*pBuff)
|
||||
pBuff++;
|
||||
|
@ -1418,13 +1415,13 @@ VARIANT_FormatNumber_Bool:
|
|||
if (exponent < 0)
|
||||
{
|
||||
*pBuff++ = '-';
|
||||
sprintfW(pBuff, szPercentZeroStar_d, pToken[1], -exponent);
|
||||
swprintf(pBuff, szPercentZeroStar_d, pToken[1], -exponent);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*pToken == FMT_NUM_EXP_POS_L || *pToken == FMT_NUM_EXP_POS_U)
|
||||
*pBuff++ = '+';
|
||||
sprintfW(pBuff, szPercentZeroStar_d, pToken[1], exponent);
|
||||
swprintf(pBuff, szPercentZeroStar_d, pToken[1], exponent);
|
||||
}
|
||||
while (*pBuff)
|
||||
pBuff++;
|
||||
|
@ -1897,7 +1894,7 @@ static HRESULT VARIANT_FormatDate(LPVARIANT pVarIn, LPOLESTR lpszFormat,
|
|||
}
|
||||
else if (szPrintFmt)
|
||||
{
|
||||
sprintfW(pBuff, szPrintFmt, dwVal);
|
||||
swprintf(pBuff, szPrintFmt, dwVal);
|
||||
while (*pBuff)
|
||||
pBuff++;
|
||||
}
|
||||
|
@ -1956,7 +1953,7 @@ static HRESULT VARIANT_FormatString(LPVARIANT pVarIn, LPOLESTR lpszFormat,
|
|||
pSrc = V_BSTR(&vStr);
|
||||
if ((strHeader->flags & (FMT_FLAG_LT|FMT_FLAG_GT)) == FMT_FLAG_GT)
|
||||
bUpper = TRUE;
|
||||
blanks_first = strHeader->copy_chars - strlenW(pSrc);
|
||||
blanks_first = strHeader->copy_chars - lstrlenW(pSrc);
|
||||
pToken = (const BYTE*)strHeader + sizeof(FMT_DATE_HEADER);
|
||||
|
||||
while (*pToken != FMT_GEN_END)
|
||||
|
@ -1997,9 +1994,9 @@ static HRESULT VARIANT_FormatString(LPVARIANT pVarIn, LPOLESTR lpszFormat,
|
|||
while (dwCount > 0 && *pSrc)
|
||||
{
|
||||
if (bUpper)
|
||||
*pBuff++ = toupperW(*pSrc);
|
||||
*pBuff++ = towupper(*pSrc);
|
||||
else
|
||||
*pBuff++ = tolowerW(*pSrc);
|
||||
*pBuff++ = towlower(*pSrc);
|
||||
dwCount--;
|
||||
pSrc++;
|
||||
}
|
||||
|
@ -2025,9 +2022,9 @@ VARIANT_FormatString_Exit:
|
|||
while (*pSrc)
|
||||
{
|
||||
if (bUpper)
|
||||
*pBuff++ = toupperW(*pSrc);
|
||||
*pBuff++ = towupper(*pSrc);
|
||||
else
|
||||
*pBuff++ = tolowerW(*pSrc);
|
||||
*pBuff++ = towlower(*pSrc);
|
||||
pSrc++;
|
||||
}
|
||||
VariantClear(&vStr);
|
||||
|
@ -2284,9 +2281,9 @@ HRESULT WINAPI VarFormatNumber(LPVARIANT pVarIn, INT nDigits, INT nLeading, INT
|
|||
|
||||
if (nGrouping == -2)
|
||||
{
|
||||
WCHAR grouping[16];
|
||||
WCHAR grouping[10];
|
||||
grouping[2] = '\0';
|
||||
GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, grouping, ARRAY_SIZE(grouping));
|
||||
GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_SGROUPING, grouping, ARRAY_SIZE(grouping));
|
||||
numfmt.Grouping = grouping[2] == '2' ? 32 : grouping[0] - '0';
|
||||
}
|
||||
else if (nGrouping == -1)
|
||||
|
@ -2380,12 +2377,12 @@ HRESULT WINAPI VarFormatPercent(LPVARIANT pVarIn, INT nDigits, INT nLeading, INT
|
|||
|
||||
if (SUCCEEDED(hRet))
|
||||
{
|
||||
DWORD dwLen = strlenW(*pbstrOut);
|
||||
DWORD dwLen = lstrlenW(*pbstrOut);
|
||||
BOOL bBracket = (*pbstrOut)[dwLen] == ')';
|
||||
|
||||
dwLen -= bBracket;
|
||||
memcpy(buff, *pbstrOut, dwLen * sizeof(WCHAR));
|
||||
strcpyW(buff + dwLen, bBracket ? szPercentBracket : szPercent);
|
||||
lstrcpyW(buff + dwLen, bBracket ? szPercentBracket : szPercent);
|
||||
SysFreeString(*pbstrOut);
|
||||
*pbstrOut = SysAllocString(buff);
|
||||
if (!*pbstrOut)
|
||||
|
@ -2443,7 +2440,7 @@ HRESULT WINAPI VarFormatCurrency(LPVARIANT pVarIn, INT nDigits, INT nLeading,
|
|||
|
||||
if (SUCCEEDED(hRet))
|
||||
{
|
||||
WCHAR buff[256], decimal[8], thousands[8], currency[8];
|
||||
WCHAR buff[256], decimal[8], thousands[4], currency[13];
|
||||
CURRENCYFMTW numfmt;
|
||||
|
||||
if (nDigits < 0)
|
||||
|
@ -2460,9 +2457,9 @@ HRESULT WINAPI VarFormatCurrency(LPVARIANT pVarIn, INT nDigits, INT nLeading,
|
|||
|
||||
if (nGrouping == -2)
|
||||
{
|
||||
WCHAR grouping[16];
|
||||
WCHAR grouping[10];
|
||||
grouping[2] = '\0';
|
||||
GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, grouping, ARRAY_SIZE(grouping));
|
||||
GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_SGROUPING, grouping, ARRAY_SIZE(grouping));
|
||||
numfmt.Grouping = grouping[2] == '2' ? 32 : grouping[0] - '0';
|
||||
}
|
||||
else if (nGrouping == -1)
|
||||
|
@ -2482,9 +2479,9 @@ HRESULT WINAPI VarFormatCurrency(LPVARIANT pVarIn, INT nDigits, INT nLeading,
|
|||
numfmt.lpDecimalSep = decimal;
|
||||
GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, decimal, ARRAY_SIZE(decimal));
|
||||
numfmt.lpThousandSep = thousands;
|
||||
GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, thousands, ARRAY_SIZE(thousands));
|
||||
GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_STHOUSAND, thousands, ARRAY_SIZE(thousands));
|
||||
numfmt.lpCurrencySymbol = currency;
|
||||
GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, currency, ARRAY_SIZE(currency));
|
||||
GetLocaleInfoW(LOCALE_USER_DEFAULT, LOCALE_SCURRENCY, currency, ARRAY_SIZE(currency));
|
||||
|
||||
/* use NLS as per VarFormatNumber() */
|
||||
if (GetCurrencyFormatW(LOCALE_USER_DEFAULT, 0, V_BSTR(&vStr), &numfmt, buff, ARRAY_SIZE(buff)))
|
||||
|
|
|
@ -25,8 +25,6 @@
|
|||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
|
@ -37,7 +35,6 @@
|
|||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "winerror.h"
|
||||
#include "variant.h"
|
||||
#include "resource.h"
|
||||
|
@ -1635,14 +1632,14 @@ HRESULT WINAPI VarParseNumFromStr(OLECHAR *lpszStr, LCID lcid, ULONG dwFlags,
|
|||
/* First consume all the leading symbols and space from the string */
|
||||
while (1)
|
||||
{
|
||||
if (pNumprs->dwInFlags & NUMPRS_LEADING_WHITE && isspaceW(*lpszStr))
|
||||
if (pNumprs->dwInFlags & NUMPRS_LEADING_WHITE && iswspace(*lpszStr))
|
||||
{
|
||||
pNumprs->dwOutFlags |= NUMPRS_LEADING_WHITE;
|
||||
do
|
||||
{
|
||||
cchUsed++;
|
||||
lpszStr++;
|
||||
} while (isspaceW(*lpszStr));
|
||||
} while (iswspace(*lpszStr));
|
||||
}
|
||||
else if (pNumprs->dwInFlags & NUMPRS_LEADING_PLUS &&
|
||||
*lpszStr == chars.cPositiveSymbol &&
|
||||
|
@ -1717,14 +1714,14 @@ HRESULT WINAPI VarParseNumFromStr(OLECHAR *lpszStr, LCID lcid, ULONG dwFlags,
|
|||
|
||||
while (*lpszStr)
|
||||
{
|
||||
if (isdigitW(*lpszStr))
|
||||
if (iswdigit(*lpszStr))
|
||||
{
|
||||
if (dwState & B_PROCESSING_EXPONENT)
|
||||
{
|
||||
int exponentSize = 0;
|
||||
if (dwState & B_EXPONENT_START)
|
||||
{
|
||||
if (!isdigitW(*lpszStr))
|
||||
if (!iswdigit(*lpszStr))
|
||||
break; /* No exponent digits - invalid */
|
||||
while (*lpszStr == '0')
|
||||
{
|
||||
|
@ -1734,7 +1731,7 @@ HRESULT WINAPI VarParseNumFromStr(OLECHAR *lpszStr, LCID lcid, ULONG dwFlags,
|
|||
}
|
||||
}
|
||||
|
||||
while (isdigitW(*lpszStr))
|
||||
while (iswdigit(*lpszStr))
|
||||
{
|
||||
exponentSize *= 10;
|
||||
exponentSize += *lpszStr - '0';
|
||||
|
@ -1906,14 +1903,14 @@ HRESULT WINAPI VarParseNumFromStr(OLECHAR *lpszStr, LCID lcid, ULONG dwFlags,
|
|||
/* Consume any trailing symbols and space */
|
||||
while (1)
|
||||
{
|
||||
if ((pNumprs->dwInFlags & NUMPRS_TRAILING_WHITE) && isspaceW(*lpszStr))
|
||||
if ((pNumprs->dwInFlags & NUMPRS_TRAILING_WHITE) && iswspace(*lpszStr))
|
||||
{
|
||||
pNumprs->dwOutFlags |= NUMPRS_TRAILING_WHITE;
|
||||
do
|
||||
{
|
||||
cchUsed++;
|
||||
lpszStr++;
|
||||
} while (isspaceW(*lpszStr));
|
||||
} while (iswspace(*lpszStr));
|
||||
}
|
||||
else if (pNumprs->dwInFlags & NUMPRS_TRAILING_PLUS &&
|
||||
!(pNumprs->dwOutFlags & NUMPRS_LEADING_PLUS) &&
|
||||
|
@ -5138,7 +5135,9 @@ HRESULT WINAPI VarRound(LPVARIANT pVarIn, int deci, LPVARIANT pVarOut)
|
|||
{
|
||||
double dbl;
|
||||
|
||||
VarR8FromDec(&V_DECIMAL(pVarIn), &dbl);
|
||||
hRet = VarR8FromDec(&V_DECIMAL(pVarIn), &dbl);
|
||||
if (FAILED(hRet))
|
||||
break;
|
||||
|
||||
if (dbl>0.0f)
|
||||
dbl = floor(dbl*pow(10,deci)+0.5);
|
||||
|
@ -5146,7 +5145,7 @@ HRESULT WINAPI VarRound(LPVARIANT pVarIn, int deci, LPVARIANT pVarOut)
|
|||
dbl = ceil(dbl*pow(10,deci)-0.5);
|
||||
|
||||
V_VT(pVarOut)=VT_DECIMAL;
|
||||
VarDecFromR8(dbl, &V_DECIMAL(pVarOut));
|
||||
hRet = VarDecFromR8(dbl, &V_DECIMAL(pVarOut));
|
||||
break;
|
||||
}
|
||||
/* cases we don't know yet */
|
||||
|
|
|
@ -22,8 +22,9 @@
|
|||
#define NONAMELESSUNION
|
||||
#define NONAMELESSSTRUCT
|
||||
|
||||
#include <wchar.h>
|
||||
|
||||
#include "wine/debug.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "winbase.h"
|
||||
#include "winuser.h"
|
||||
#include "winnt.h"
|
||||
|
@ -6150,13 +6151,13 @@ VarBoolFromStr_CheckLocalised:
|
|||
if (VARIANT_GetLocalisedText(langId, IDS_TRUE, szBuff))
|
||||
{
|
||||
/* Compare against localised strings, ignoring case */
|
||||
if (!strcmpiW(strIn, szBuff))
|
||||
if (!wcsicmp(strIn, szBuff))
|
||||
{
|
||||
*pBoolOut = VARIANT_TRUE; /* Matched localised 'true' text */
|
||||
return hRes;
|
||||
}
|
||||
VARIANT_GetLocalisedText(langId, IDS_FALSE, szBuff);
|
||||
if (!strcmpiW(strIn, szBuff))
|
||||
if (!wcsicmp(strIn, szBuff))
|
||||
{
|
||||
*pBoolOut = VARIANT_FALSE; /* Matched localised 'false' text */
|
||||
return hRes;
|
||||
|
@ -6171,9 +6172,9 @@ VarBoolFromStr_CheckLocalised:
|
|||
}
|
||||
|
||||
/* All checks against localised text have failed, try #TRUE#/#FALSE# */
|
||||
if (!strcmpW(strIn, szFalse))
|
||||
if (!wcscmp(strIn, szFalse))
|
||||
*pBoolOut = VARIANT_FALSE;
|
||||
else if (!strcmpW(strIn, szTrue))
|
||||
else if (!wcscmp(strIn, szTrue))
|
||||
*pBoolOut = VARIANT_TRUE;
|
||||
else
|
||||
{
|
||||
|
@ -6356,7 +6357,7 @@ static BSTR VARIANT_MakeBstr(LCID lcid, DWORD dwFlags, WCHAR *szOut)
|
|||
szOut, NULL, szConverted, ARRAY_SIZE(szConverted));
|
||||
szOut = szConverted;
|
||||
}
|
||||
return SysAllocStringByteLen((LPCSTR)szOut, strlenW(szOut) * sizeof(WCHAR));
|
||||
return SysAllocStringByteLen((LPCSTR)szOut, lstrlenW(szOut) * sizeof(WCHAR));
|
||||
}
|
||||
|
||||
/* Create a (possibly localised) BSTR from a UI8 and sign */
|
||||
|
@ -6487,8 +6488,8 @@ static BSTR VARIANT_BstrReplaceDecimal(const WCHAR * buff, LCID lcid, ULONG dwFl
|
|||
minFormat.NegativeOrder = 1; /* NLS_NEG_LEFT */
|
||||
|
||||
/* count number of decimal digits in string */
|
||||
p = strchrW( buff, '.' );
|
||||
if (p) minFormat.NumDigits = strlenW(p + 1);
|
||||
p = wcschr( buff, '.' );
|
||||
if (p) minFormat.NumDigits = lstrlenW(p + 1);
|
||||
|
||||
numbuff[0] = '\0';
|
||||
if (!GetNumberFormatW(lcid, 0, buff, &minFormat, numbuff, ARRAY_SIZE(numbuff)))
|
||||
|
@ -6513,7 +6514,7 @@ static HRESULT VARIANT_BstrFromReal(DOUBLE dblIn, LCID lcid, ULONG dwFlags,
|
|||
if (!pbstrOut)
|
||||
return E_INVALIDARG;
|
||||
|
||||
sprintfW( buff, lpszFormat, dblIn );
|
||||
swprintf( buff, lpszFormat, dblIn );
|
||||
|
||||
/* Negative zeroes are disallowed (some applications depend on this).
|
||||
If buff starts with a minus, and then nothing follows but zeroes
|
||||
|
@ -6523,7 +6524,7 @@ static HRESULT VARIANT_BstrFromReal(DOUBLE dblIn, LCID lcid, ULONG dwFlags,
|
|||
if (buff[0] == '-')
|
||||
{
|
||||
static const WCHAR szAccept[] = {'0', '.', '\0'};
|
||||
if (strlenW(buff + 1) == strspnW(buff + 1, szAccept))
|
||||
if (lstrlenW(buff + 1) == wcsspn(buff + 1, szAccept))
|
||||
{ buff[0] = '0'; buff[1] = '\0'; }
|
||||
}
|
||||
|
||||
|
@ -6814,7 +6815,7 @@ HRESULT WINAPI VarBstrFromDate(DATE dateIn, LCID lcid, ULONG dwFlags, BSTR* pbst
|
|||
|
||||
if (!(dwFlags & VAR_DATEVALUEONLY))
|
||||
{
|
||||
time = date + strlenW(date);
|
||||
time = date + lstrlenW(date);
|
||||
if (time != date)
|
||||
*time++ = ' ';
|
||||
if (!GetTimeFormatW(lcid, dwFormatFlags, &st, NULL, time, ARRAY_SIZE(date)-(time-date)))
|
||||
|
@ -7658,25 +7659,25 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd
|
|||
/* Parse the string into our structure */
|
||||
while (*strIn)
|
||||
{
|
||||
if (isdigitW(*strIn))
|
||||
if (iswdigit(*strIn))
|
||||
{
|
||||
if (dp.dwCount >= 6)
|
||||
{
|
||||
hRet = DISP_E_TYPEMISMATCH;
|
||||
break;
|
||||
}
|
||||
dp.dwValues[dp.dwCount] = strtoulW(strIn, &strIn, 10);
|
||||
dp.dwValues[dp.dwCount] = wcstoul(strIn, &strIn, 10);
|
||||
dp.dwCount++;
|
||||
strIn--;
|
||||
}
|
||||
else if (isalphaW(*strIn))
|
||||
else if (iswalpha(*strIn))
|
||||
{
|
||||
BOOL bFound = FALSE;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(tokens); i++)
|
||||
{
|
||||
DWORD dwLen = strlenW(tokens[i]);
|
||||
if (dwLen && !strncmpiW(strIn, tokens[i], dwLen))
|
||||
DWORD dwLen = lstrlenW(tokens[i]);
|
||||
if (dwLen && !_wcsnicmp(strIn, tokens[i], dwLen))
|
||||
{
|
||||
if (i <= 25)
|
||||
{
|
||||
|
@ -7755,7 +7756,7 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd
|
|||
else
|
||||
dp.dwFlags[dp.dwCount - 1] |= DP_DATESEP;
|
||||
}
|
||||
else if (*strIn == ',' || isspaceW(*strIn))
|
||||
else if (*strIn == ',' || iswspace(*strIn))
|
||||
{
|
||||
if (*strIn == ',' && !strIn[1])
|
||||
hRet = DISP_E_TYPEMISMATCH;
|
||||
|
|
|
@ -142,7 +142,7 @@ dll/win32/odbc32 # Synced to WineStaging-4.18. Depends on port of L
|
|||
dll/win32/odbccp32 # Synced to WineStaging-4.18
|
||||
dll/win32/ole32 # Synced to WineStaging-4.18
|
||||
dll/win32/oleacc # Synced to WineStaging-4.18
|
||||
dll/win32/oleaut32 # Synced to WineStaging-4.0
|
||||
dll/win32/oleaut32 # Synced to WineStaging-4.18
|
||||
dll/win32/olecli32 # Synced to WineStaging-3.3
|
||||
dll/win32/oledlg # Synced to WineStaging-4.0
|
||||
dll/win32/olepro32 # Synced to WineStaging-3.3
|
||||
|
|
Loading…
Reference in a new issue