Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/msvcp110/msvcp110.spec | 2 +- dlls/msvcp120/msvcp120.spec | 2 +- dlls/msvcp120_app/msvcp120_app.spec | 2 +- dlls/msvcp140/msvcp140.spec | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/msvcp110/msvcp110.spec b/dlls/msvcp110/msvcp110.spec index 834c4225373..fc2d63c89f7 100644 --- a/dlls/msvcp110/msvcp110.spec +++ b/dlls/msvcp110/msvcp110.spec @@ -3780,7 +3780,7 @@ # extern _FZero @ cdecl -ret64 _Getcoll() @ cdecl _Getctype(ptr) -@ cdecl -ret64 _Getcvt() +@ cdecl -ret64 _Getcvt(ptr) @ cdecl _Getdateorder() @ cdecl _Getwctype(long ptr) @ cdecl _Getwctypes(ptr ptr ptr ptr) diff --git a/dlls/msvcp120/msvcp120.spec b/dlls/msvcp120/msvcp120.spec index 633b3da8552..67eb5d25924 100644 --- a/dlls/msvcp120/msvcp120.spec +++ b/dlls/msvcp120/msvcp120.spec @@ -3723,7 +3723,7 @@ # extern _FZero @ cdecl -ret64 _Getcoll() @ cdecl _Getctype(ptr) -@ cdecl -ret64 _Getcvt() +@ cdecl -ret64 _Getcvt(ptr) @ cdecl _Getdateorder() @ cdecl _Getwctype(long ptr) @ cdecl _Getwctypes(ptr ptr ptr ptr) diff --git a/dlls/msvcp120_app/msvcp120_app.spec b/dlls/msvcp120_app/msvcp120_app.spec index c35dcb2d427..a5d6065bae9 100644 --- a/dlls/msvcp120_app/msvcp120_app.spec +++ b/dlls/msvcp120_app/msvcp120_app.spec @@ -3723,7 +3723,7 @@ # extern _FZero @ cdecl -ret64 _Getcoll() msvcp120._Getcoll @ cdecl _Getctype(ptr) msvcp120._Getctype -@ cdecl -ret64 _Getcvt() msvcp120._Getcvt +@ cdecl -ret64 _Getcvt(ptr) msvcp120._Getcvt @ cdecl _Getdateorder() msvcp120._Getdateorder @ cdecl _Getwctype(long ptr) msvcp120._Getwctype @ cdecl _Getwctypes(ptr ptr ptr ptr) msvcp120._Getwctypes diff --git a/dlls/msvcp140/msvcp140.spec b/dlls/msvcp140/msvcp140.spec index 6ad46186cb5..c63cded2d07 100644 --- a/dlls/msvcp140/msvcp140.spec +++ b/dlls/msvcp140/msvcp140.spec @@ -3651,7 +3651,7 @@ @ cdecl _File_size(wstr) @ cdecl -ret64 _Getcoll() @ cdecl _Getctype(ptr) -@ cdecl -ret64 _Getcvt() +@ cdecl -ret64 _Getcvt(ptr) @ cdecl _Getdateorder() @ cdecl _Getwctype(long ptr) @ cdecl _Getwctypes(ptr ptr ptr ptr)
Hi Zeb,
On 5/4/21 6:41 AM, Zebediah Figura wrote:
-@ cdecl -ret64 _Getcvt() +@ cdecl -ret64 _Getcvt(ptr)
It used to be: @ cdecl _Getcvt(ptr)
Taking in account there was some discussion regarding lldiv I guess it should be changed differently. Probably current implementation is incorrect on some platforms. I guess it should look like this: #if (defined(__GNUC__) && defined(__i386__) //TODO: check if we need similar workaround for x86_64 /* Workaround a bug in GCC */ ULONGLONG __cdecl _Getcvt(void) { union { _Cvtvec cvtvec; ULONGLONG ull; } ret;
TRACE("\n");
ret.cvtvec.page = ___lc_codepage_func(); ret.cvtvec.handle = ___lc_handle_func()[LC_CTYPE]; return ret.ull; } #else _Cvtvec __cdecl _Getcvt(void) { _Cvtvec ret = {0}; #if _MSVCP_VER >= 110 int i; #endif
TRACE("\n");
ret.cvtvec.page = ___lc_codepage_func(); #if _MSVCP_VER < 110 ret.cvtvec.handle = ___lc_handle_func()[LC_CTYPE]; #else ret->mb_max = ___mb_cur_max_func();
if(ret->mb_max > 1) { for(i=0; i<256; i++) if(_ismbblead(i)) ret->isleadbyte[i/8] |= 1 << (i&7); } #endif return ret; } #endif
And the spec file entry can be changed to: @ cdecl -norelay _Getcvt()
Please note that code written here is completely untested. I'm just raising some possible concerns.
Thanks, Piotr
On 5/4/21 11:48 AM, Piotr Caban wrote:
#if (defined(__GNUC__) && defined(__i386__)
#if _MSVCP_VER<110 && defined(__GNU__) && defined(__i386__)
On 5/4/21 4:48 AM, Piotr Caban wrote:
Hi Zeb,
On 5/4/21 6:41 AM, Zebediah Figura wrote:
-@ cdecl -ret64 _Getcvt() +@ cdecl -ret64 _Getcvt(ptr)
It used to be: @ cdecl _Getcvt(ptr)
Taking in account there was some discussion regarding lldiv I guess it should be changed differently. Probably current implementation is incorrect on some platforms. I guess it should look like this: #if (defined(__GNUC__) && defined(__i386__) //TODO: check if we need similar workaround for x86_64 /* Workaround a bug in GCC */ ULONGLONG __cdecl _Getcvt(void) { union { _Cvtvec cvtvec; ULONGLONG ull; } ret;
TRACE("\n"); ret.cvtvec.page = ___lc_codepage_func(); ret.cvtvec.handle = ___lc_handle_func()[LC_CTYPE]; return ret.ull;
} #else _Cvtvec __cdecl _Getcvt(void) { _Cvtvec ret = {0}; #if _MSVCP_VER >= 110 int i; #endif
TRACE("\n"); ret.cvtvec.page = ___lc_codepage_func();
#if _MSVCP_VER < 110 ret.cvtvec.handle = ___lc_handle_func()[LC_CTYPE]; #else ret->mb_max = ___mb_cur_max_func();
if(ret->mb_max > 1) { for(i=0; i<256; i++) if(_ismbblead(i)) ret->isleadbyte[i/8] |= 1 << (i&7); }
#endif return ret; } #endif
And the spec file entry can be changed to: @ cdecl -norelay _Getcvt()
Please note that code written here is completely untested. I'm just raising some possible concerns.
Sorry for the silence. I expect you're right. I'll get around to properly testing this at some point.