winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
August 2019
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
703 discussions
Start a n
N
ew thread
Louis Lenders : ntdll: Add DECLSPEC_HOTPATCH to NtQueryDirectoryFile.
by Alexandre Julliard
23 Aug '19
23 Aug '19
Module: wine Branch: stable Commit: b27c6672ac0b9512704c24b81e74997c3be9d0f8 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=b27c6672ac0b9512704c24b8…
Author: Louis Lenders <xerox.xerox2000x(a)gmail.com> Date: Sat Apr 13 20:28:08 2019 +0200 ntdll: Add DECLSPEC_HOTPATCH to NtQueryDirectoryFile. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=45703
Signed-off-by: Louis Lenders <xerox.xerox2000x(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit 3a0ffe5a370d4d13512c9f9315ab961fcef08d19) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/ntdll/directory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c index 85cc869..1b927cb 100644 --- a/dlls/ntdll/directory.c +++ b/dlls/ntdll/directory.c @@ -1933,7 +1933,7 @@ static NTSTATUS get_cached_dir_data( HANDLE handle, struct dir_data **data_ret, * NtQueryDirectoryFile [NTDLL.@] * ZwQueryDirectoryFile [NTDLL.@] */ -NTSTATUS WINAPI NtQueryDirectoryFile( HANDLE handle, HANDLE event, +NTSTATUS WINAPI DECLSPEC_HOTPATCH NtQueryDirectoryFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc_routine, PVOID apc_context, PIO_STATUS_BLOCK io, PVOID buffer, ULONG length,
1
0
0
0
Nikolay Sivov : dwrite/layout: Fix invalid index access to cluster array.
by Alexandre Julliard
23 Aug '19
23 Aug '19
Module: wine Branch: stable Commit: f757ea635cd29d98d1d8ae0078bcc83aa658dc9d URL:
https://source.winehq.org/git/wine.git/?a=commit;h=f757ea635cd29d98d1d8ae00…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Mon Apr 15 18:22:46 2019 +0300 dwrite/layout: Fix invalid index access to cluster array. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=45543
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit 571ffaf380f3d80da60ff8bca4031baceefa7811) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/dwrite/layout.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c index a562927..d958f8d 100644 --- a/dlls/dwrite/layout.c +++ b/dlls/dwrite/layout.c @@ -1853,6 +1853,9 @@ static void layout_add_line(struct dwrite_textlayout *layout, UINT32 first_clust metrics.trailingWhitespaceLength += cluster->length; trailingspacewidth += cluster->width; + + if (index == 0) + break; } /* Line metrics length includes trailing whitespace length too */
1
0
0
0
Bruno Jesus : mciavi32: Add Support for MCI_MCIAVI_PLAY_FULLSCREEN.
by Alexandre Julliard
23 Aug '19
23 Aug '19
Module: wine Branch: stable Commit: b9333b02f6784bbefcb8c73d37c3685343b6e335 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=b9333b02f6784bbefcb8c73d…
Author: Bruno Jesus <bjesus(a)codeweavers.com> Date: Wed Apr 17 10:55:52 2019 +0200 mciavi32: Add Support for MCI_MCIAVI_PLAY_FULLSCREEN. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=15934
Signed-off-by: Vijay Kiran Kamuju <infyquest(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit 08af837a8c3732da2053d600a058b3e17075df43) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/mciavi32/mciavi.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/dlls/mciavi32/mciavi.c b/dlls/mciavi32/mciavi.c index b32accb..9aa6cd8 100644 --- a/dlls/mciavi32/mciavi.c +++ b/dlls/mciavi32/mciavi.c @@ -556,7 +556,7 @@ static DWORD MCIAVI_mciPlay(UINT wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms if (dwFlags & MCI_DGV_PLAY_REVERSE) return MCIERR_UNSUPPORTED_FUNCTION; if (dwFlags & MCI_TEST) return 0; - if (dwFlags & (MCI_MCIAVI_PLAY_WINDOW|MCI_MCIAVI_PLAY_FULLSCREEN|MCI_MCIAVI_PLAY_FULLBY2)) + if (dwFlags & (MCI_MCIAVI_PLAY_WINDOW|MCI_MCIAVI_PLAY_FULLBY2)) FIXME("Unsupported flag %08x\n", dwFlags); EnterCriticalSection(&wma->cs); @@ -591,7 +591,18 @@ static DWORD MCIAVI_mciPlay(UINT wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms LeaveCriticalSection(&wma->cs); - if (!(GetWindowLongW(wma->hWndPaint, GWL_STYLE) & WS_VISIBLE)) + if (dwFlags & MCI_MCIAVI_PLAY_FULLSCREEN) + { + HMONITOR mon = MonitorFromWindow(wma->hWndPaint, MONITOR_DEFAULTTONEAREST); + MONITORINFO mi; + mi.cbSize = sizeof(mi); + GetMonitorInfoA(mon, &mi); + wma->hWndPaint = CreateWindowA("STATIC", NULL, WS_POPUP | WS_VISIBLE, mi.rcMonitor.left, + mi.rcMonitor.top, mi.rcMonitor.right - mi.rcMonitor.left, mi.rcMonitor.bottom - mi.rcMonitor.top, + NULL, NULL, NULL, 0); + } + /* if not fullscreen ensure the window is visible */ + else if (!(GetWindowLongW(wma->hWndPaint, GWL_STYLE) & WS_VISIBLE)) ShowWindow(wma->hWndPaint, SW_SHOWNA); EnterCriticalSection(&wma->cs);
1
0
0
0
Austin English : propvarutil.h: Add extern "C" if __cplusplus is defined.
by Alexandre Julliard
23 Aug '19
23 Aug '19
Module: wine Branch: stable Commit: caade2f611cc66b382d783911e963e78b8fbdecd URL:
https://source.winehq.org/git/wine.git/?a=commit;h=caade2f611cc66b382d78391…
Author: Austin English <austinenglish(a)gmail.com> Date: Wed Apr 3 01:43:54 2019 -0500 propvarutil.h: Add extern "C" if __cplusplus is defined. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=46939
Signed-off-by: Austin English <austinenglish(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit da998cb20677d781f643d4984880f17556c423d9) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- include/propvarutil.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/include/propvarutil.h b/include/propvarutil.h index 0285caf..ded578d 100644 --- a/include/propvarutil.h +++ b/include/propvarutil.h @@ -22,6 +22,10 @@ #include <shtypes.h> #include <shlwapi.h> +#ifdef __cplusplus +extern "C" { +#endif + enum tagPROPVAR_CHANGE_FLAGS { PVCHF_DEFAULT = 0x00000000, @@ -117,7 +121,12 @@ inline HRESULT InitPropVariantFromInt64(LONGLONG llVal, PROPVARIANT *ppropvar) return S_OK; } -#endif +#endif /* NO_PROPVAR_INLINES */ +#endif /* __cplusplus */ + + +#ifdef __cplusplus +} #endif #endif /* __WINE_PROPVARUTIL_H */
1
0
0
0
Piotr Caban : msvcr110: Fix __crtGetShowWindowMode implementation.
by Alexandre Julliard
23 Aug '19
23 Aug '19
Module: wine Branch: stable Commit: 4972b18632618f52fcf504da4c3a1c5c8f543bbf URL:
https://source.winehq.org/git/wine.git/?a=commit;h=4972b18632618f52fcf504da…
Author: Piotr Caban <piotr(a)codeweavers.com> Date: Mon Apr 1 17:46:07 2019 +0200 msvcr110: Fix __crtGetShowWindowMode implementation. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=46928
Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit b353ad7db8e013bab8bfd0ffde3610372fa3d644) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/msvcrt/misc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dlls/msvcrt/misc.c b/dlls/msvcrt/misc.c index 5a4e77b..21ab9be 100644 --- a/dlls/msvcrt/misc.c +++ b/dlls/msvcrt/misc.c @@ -26,6 +26,7 @@ #include "msvcrt.h" #include "wine/debug.h" #include "ntsecapi.h" +#include "windows.h" WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); @@ -517,8 +518,8 @@ int CDECL MSVCR110__crtGetShowWindowMode(void) STARTUPINFOW si; GetStartupInfoW(&si); - TRACE("window=%d\n", si.wShowWindow); - return si.wShowWindow; + TRACE("flags=%x window=%d\n", si.dwFlags, si.wShowWindow); + return si.dwFlags & STARTF_USESHOWWINDOW ? si.wShowWindow : SW_SHOWDEFAULT; } /*********************************************************************
1
0
0
0
Gijs Vermeulen : mssign32: Implement SignerFreeSignerContext.
by Alexandre Julliard
23 Aug '19
23 Aug '19
Module: wine Branch: stable Commit: e5cc66718d458b96b225152b17fd91bb06b6f641 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=e5cc66718d458b96b225152b…
Author: Gijs Vermeulen <gijsvrm(a)gmail.com> Date: Thu Apr 4 02:55:43 2019 +0200 mssign32: Implement SignerFreeSignerContext. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=46903
Signed-off-by: Gijs Vermeulen <gijsvrm(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit e71bb692f3ea33fee32c6d68946098a5e1d89444) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/mssign32/mssign32.spec | 2 +- dlls/mssign32/mssign32_main.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/dlls/mssign32/mssign32.spec b/dlls/mssign32/mssign32.spec index c7b3cef..f25e23e 100644 --- a/dlls/mssign32/mssign32.spec +++ b/dlls/mssign32/mssign32.spec @@ -22,7 +22,7 @@ @ stub SignerAddTimeStampResponse @ stub SignerAddTimeStampResponseEx @ stub SignerCreateTimeStampRequest -@ stub SignerFreeSignerContext +@ stdcall SignerFreeSignerContext(ptr) @ stub SignerSign @ stdcall SignerSignEx(long ptr ptr ptr ptr wstr ptr ptr ptr) @ stub SignerTimeStamp diff --git a/dlls/mssign32/mssign32_main.c b/dlls/mssign32/mssign32_main.c index 2a5365e..8b0720e 100644 --- a/dlls/mssign32/mssign32_main.c +++ b/dlls/mssign32/mssign32_main.c @@ -27,6 +27,7 @@ #include "wincrypt.h" #include "wine/debug.h" +#include "wine/heap.h" #include "mssign32_private.h" @@ -84,3 +85,9 @@ HRESULT WINAPI SignerSignEx(DWORD flags, SIGNER_SUBJECT_INFO *subject_info, SIGN wine_dbgstr_w(http_time_stamp), request, sip_data, signer_cert); return E_NOTIMPL; } + +HRESULT WINAPI SignerFreeSignerContext(SIGNER_CONTEXT *signer_context) +{ + heap_free(signer_context); + return S_OK; +}
1
0
0
0
Gijs Vermeulen : mssign32: Add SignerSignEx stub.
by Alexandre Julliard
23 Aug '19
23 Aug '19
Module: wine Branch: stable Commit: 0834006ce931749ad5614672c33af56937d6dafa URL:
https://source.winehq.org/git/wine.git/?a=commit;h=0834006ce931749ad5614672…
Author: Gijs Vermeulen <gijsvrm(a)gmail.com> Date: Thu Apr 4 02:55:42 2019 +0200 mssign32: Add SignerSignEx stub. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=46903
Signed-off-by: Gijs Vermeulen <gijsvrm(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit ec814c107470e6dd63cf33ed2c87bd5fefaeeaa2) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/mssign32/mssign32.spec | 2 +- dlls/mssign32/mssign32_main.c | 12 ++++ dlls/mssign32/mssign32_private.h | 124 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 137 insertions(+), 1 deletion(-) diff --git a/dlls/mssign32/mssign32.spec b/dlls/mssign32/mssign32.spec index 07d7a99..c7b3cef 100644 --- a/dlls/mssign32/mssign32.spec +++ b/dlls/mssign32/mssign32.spec @@ -24,7 +24,7 @@ @ stub SignerCreateTimeStampRequest @ stub SignerFreeSignerContext @ stub SignerSign -@ stub SignerSignEx +@ stdcall SignerSignEx(long ptr ptr ptr ptr wstr ptr ptr ptr) @ stub SignerTimeStamp @ stub SignerTimeStampEx @ stub SpcGetCertFromKey diff --git a/dlls/mssign32/mssign32_main.c b/dlls/mssign32/mssign32_main.c index e35488b..2a5365e 100644 --- a/dlls/mssign32/mssign32_main.c +++ b/dlls/mssign32/mssign32_main.c @@ -28,6 +28,8 @@ #include "wine/debug.h" +#include "mssign32_private.h" + WINE_DEFAULT_DEBUG_CHANNEL(mssign); BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID lpv ) @@ -72,3 +74,13 @@ void WINAPI PvkFreeCryptProv(HCRYPTPROV hProv, LPCWSTR pwszCapiProvider, DWORD d FIXME("%08lx %s %d %s stub\n", hProv, debugstr_w(pwszCapiProvider), dwProviderType, debugstr_w(pwszTmpContainer)); } + +HRESULT WINAPI SignerSignEx(DWORD flags, SIGNER_SUBJECT_INFO *subject_info, SIGNER_CERT *signer_cert, + SIGNER_SIGNATURE_INFO *signature_info, SIGNER_PROVIDER_INFO *provider_info, + const WCHAR *http_time_stamp, CRYPT_ATTRIBUTES *request, void *sip_data, + SIGNER_CONTEXT **signer_context) +{ + FIXME("%x %p %p %p %p %s %p %p %p stub\n", flags, subject_info, signer_cert, signature_info, provider_info, + wine_dbgstr_w(http_time_stamp), request, sip_data, signer_cert); + return E_NOTIMPL; +} diff --git a/dlls/mssign32/mssign32_private.h b/dlls/mssign32/mssign32_private.h new file mode 100644 index 0000000..a4e5d36 --- /dev/null +++ b/dlls/mssign32/mssign32_private.h @@ -0,0 +1,124 @@ +/* + * Copyright 2019 Gijs Vermeulen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "windef.h" +#include "winbase.h" +#include "wincrypt.h" + +#define SPC_EXC_PE_PAGE_HASHES_FLAG 0x10 +#define SPC_INC_PE_IMPORT_ADDR_TABLE_FLAG 0x20 +#define SPC_INC_PE_DEBUG_INFO_FLAG 0x40 +#define SPC_INC_PE_RESOURCES_FLAG 0x80 +#define SPC_INC_PE_PAGE_HASHES_FLAG 0x100 + +#define SIGNER_CERT_SPC_FILE 1 +#define SIGNER_CERT_STORE 2 +#define SIGNER_CERT_SPC_CHAIN 3 + +#define SIGNER_CERT_POLICY_STORE 0x1 +#define SIGNER_CERT_POLICY_CHAIN 0x2 +#define SIGNER_CERT_POLICY_CHAIN_NO_ROOT 0x8 + +#define SIGNER_NO_ATTR 0 +#define SIGNER_AUTHCODE_ATTR 1 + +typedef struct _SIGNER_CONTEXT { + DWORD cbSize; + DWORD cbBlob; + BYTE *pbBlob; +} SIGNER_CONTEXT, *PSIGNER_CONTEXT; + +typedef struct _SIGNER_FILE_INFO { + DWORD cbSize; + const WCHAR *pwszFileName; + HANDLE hFile; +} SIGNER_FILE_INFO, *PSIGNER_FILE_INFO; + +typedef struct _SIGNER_BLOB_INFO { + DWORD cbSize; + GUID *pGuidSubject; + DWORD cbBlob; + BYTE *pbBlob; + const WCHAR *pwszDisplayName; +} SIGNER_BLOB_INFO, *PSIGNER_BLOB_INFO; + +typedef struct _SIGNER_SUBJECT_INFO { + DWORD cbSize; + DWORD *pdwIndex; + DWORD dwSubjectChoice; + union { + SIGNER_FILE_INFO *pSignerFileInfo; + SIGNER_BLOB_INFO *pSignerBlobInfo; + }; +} SIGNER_SUBJECT_INFO, *PSIGNER_SUBJECT_INFO; + +typedef struct _SIGNER_CERT_STORE_INFO { + DWORD cbSize; + const CERT_CONTEXT *pSigningCert; + DWORD dwCertPolicy; + HCERTSTORE hCertStore; +} SIGNER_CERT_STORE_INFO, *PSIGNER_CERT_STORE_INFO; + +typedef struct _SIGNER_SPC_CHAIN_INFO { + DWORD cbSize; + const WCHAR *pwszSpcFile; + DWORD dwCertPolicy; + HCERTSTORE hCertStore; +} SIGNER_SPC_CHAIN_INFO, *PSIGNER_SPC_CHAIN_INFO; + +typedef struct _SIGNER_CERT { + DWORD cbSize; + DWORD dwCertChoice; + union { + const WCHAR *pwszSpcFile; + SIGNER_CERT_STORE_INFO *pCertStoreInfo; + SIGNER_SPC_CHAIN_INFO *pSpcChainInfo; + }; + HWND hwnd; +} SIGNER_CERT, *PSIGNER_CERT; + +typedef struct _SIGNER_ATTR_AUTHCODE { + DWORD cbSize; + BOOL fCommercial; + BOOL fIndividual; + const WCHAR *pwszName; + const WCHAR *pwszInfo; +} SIGNER_ATTR_AUTHCODE, *PSIGNER_ATTR_AUTHCODE; + +typedef struct _SIGNER_SIGNATURE_INFO { + DWORD cbSize; + ALG_ID algidHash; + DWORD dwAttrChoice; + union { + SIGNER_ATTR_AUTHCODE *pAttrAuthcode; + }; + CRYPT_ATTRIBUTES *psAuthenticated; + CRYPT_ATTRIBUTES *psUnauthenticated; +} SIGNER_SIGNATURE_INFO, *PSIGNER_SIGNATURE_INFO; + +typedef struct _SIGNER_PROVIDER_INFO { + DWORD cbSize; + const WCHAR *pwszProviderName; + DWORD dwProviderType; + DWORD dwKeySpec; + DWORD dwPvkChoice; + union { + WCHAR *pwszPvkFileName; + WCHAR *pwszKeyContainer; + }; +} SIGNER_PROVIDER_INFO, *PSIGNER_PROVIDER_INFO;
1
0
0
0
Gijs Vermeulen : msvcrt: Implement _wcsnset_s.
by Alexandre Julliard
23 Aug '19
23 Aug '19
Module: wine Branch: stable Commit: 148d3545f3ab82aa39ab6861f3c7e037dc130b5a URL:
https://source.winehq.org/git/wine.git/?a=commit;h=148d3545f3ab82aa39ab6861…
Author: Gijs Vermeulen <gijsvrm(a)gmail.com> Date: Mon Apr 1 19:57:07 2019 +0200 msvcrt: Implement _wcsnset_s. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=46902
Signed-off-by: Gijs Vermeulen <gijsvrm(a)gmail.com> Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit 92ba9e7b6dd3b4d5fe2349ea1a5c413778c53143) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- .../api-ms-win-crt-string-l1-1-0.spec | 2 +- dlls/msvcr100/msvcr100.spec | 2 +- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr120/msvcr120.spec | 2 +- dlls/msvcr120_app/msvcr120_app.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/msvcrt.spec | 2 +- dlls/msvcrt/tests/string.c | 42 ++++++++++++++++++++++ dlls/msvcrt/wcs.c | 24 +++++++++++++ dlls/ucrtbase/ucrtbase.spec | 2 +- 11 files changed, 75 insertions(+), 9 deletions(-) diff --git a/dlls/api-ms-win-crt-string-l1-1-0/api-ms-win-crt-string-l1-1-0.spec b/dlls/api-ms-win-crt-string-l1-1-0/api-ms-win-crt-string-l1-1-0.spec index 7854437..ead56fb 100644 --- a/dlls/api-ms-win-crt-string-l1-1-0/api-ms-win-crt-string-l1-1-0.spec +++ b/dlls/api-ms-win-crt-string-l1-1-0/api-ms-win-crt-string-l1-1-0.spec @@ -87,7 +87,7 @@ @ cdecl _wcsnicoll(wstr wstr long) ucrtbase._wcsnicoll @ cdecl _wcsnicoll_l(wstr wstr long ptr) ucrtbase._wcsnicoll_l @ cdecl _wcsnset(wstr long long) ucrtbase._wcsnset -@ stub _wcsnset_s +@ cdecl _wcsnset_s(wstr long long long) ucrtbase._wcsnset_s @ cdecl _wcsrev(wstr) ucrtbase._wcsrev @ cdecl _wcsset(wstr long) ucrtbase._wcsset @ cdecl _wcsset_s(wstr long long) ucrtbase._wcsset_s diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index c4574c6..dc616cf 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1507,7 +1507,7 @@ @ cdecl _wcsnicoll(wstr wstr long) MSVCRT__wcsnicoll @ cdecl _wcsnicoll_l(wstr wstr long ptr) MSVCRT__wcsnicoll_l @ cdecl _wcsnset(wstr long long) MSVCRT__wcsnset -@ stub _wcsnset_s +@ cdecl _wcsnset_s(wstr long long long) MSVCRT__wcsnset_s @ cdecl _wcsrev(wstr) MSVCRT__wcsrev @ cdecl _wcsset(wstr long) MSVCRT__wcsset @ cdecl _wcsset_s(wstr long long) MSVCRT__wcsset_s diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 59ed703..fe2c3a0 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1865,7 +1865,7 @@ @ cdecl _wcsnicoll(wstr wstr long) MSVCRT__wcsnicoll @ cdecl _wcsnicoll_l(wstr wstr long ptr) MSVCRT__wcsnicoll_l @ cdecl _wcsnset(wstr long long) MSVCRT__wcsnset -@ stub _wcsnset_s +@ cdecl _wcsnset_s(wstr long long long) MSVCRT__wcsnset_s @ cdecl _wcsrev(wstr) MSVCRT__wcsrev @ cdecl _wcsset(wstr long) MSVCRT__wcsset @ cdecl _wcsset_s(wstr long long) MSVCRT__wcsset_s diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 1b6ef35..f8a3d10 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1883,7 +1883,7 @@ @ cdecl _wcsnicoll(wstr wstr long) MSVCRT__wcsnicoll @ cdecl _wcsnicoll_l(wstr wstr long ptr) MSVCRT__wcsnicoll_l @ cdecl _wcsnset(wstr long long) MSVCRT__wcsnset -@ stub _wcsnset_s +@ cdecl _wcsnset_s(wstr long long long) MSVCRT__wcsnset_s @ cdecl _wcsrev(wstr) MSVCRT__wcsrev @ cdecl _wcsset(wstr long) MSVCRT__wcsset @ cdecl _wcsset_s(wstr long long) MSVCRT__wcsset_s diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index c675595..71528bd 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -1576,7 +1576,7 @@ @ cdecl _wcsnicoll(wstr wstr long) msvcr120._wcsnicoll @ cdecl _wcsnicoll_l(wstr wstr long ptr) msvcr120._wcsnicoll_l @ cdecl _wcsnset(wstr long long) msvcr120._wcsnset -@ stub _wcsnset_s +@ cdecl _wcsnset_s(wstr long long long) msvcr120._wcsnset_s @ cdecl _wcsrev(wstr) msvcr120._wcsrev @ cdecl _wcsset(wstr long) msvcr120._wcsset @ cdecl _wcsset_s(wstr long long) msvcr120._wcsset_s diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index c9863d9..d551783 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -1186,7 +1186,7 @@ @ cdecl _wcsnicoll(wstr wstr long) MSVCRT__wcsnicoll @ cdecl _wcsnicoll_l(wstr wstr long ptr) MSVCRT__wcsnicoll_l @ cdecl _wcsnset(wstr long long) MSVCRT__wcsnset -@ stub _wcsnset_s +@ cdecl _wcsnset_s(wstr long long long) MSVCRT__wcsnset_s @ cdecl _wcsrev(wstr) MSVCRT__wcsrev @ cdecl _wcsset(wstr long) MSVCRT__wcsset @ cdecl _wcsset_s(wstr long long) MSVCRT__wcsset_s diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index b686122..7793307 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -1162,7 +1162,7 @@ @ cdecl _wcsnicoll(wstr wstr long) MSVCRT__wcsnicoll @ cdecl _wcsnicoll_l(wstr wstr long ptr) MSVCRT__wcsnicoll_l @ cdecl _wcsnset(wstr long long) MSVCRT__wcsnset -@ stub _wcsnset_s +@ cdecl _wcsnset_s(wstr long long long) MSVCRT__wcsnset_s @ cdecl _wcsrev(wstr) MSVCRT__wcsrev @ cdecl _wcsset(wstr long) MSVCRT__wcsset @ cdecl _wcsset_s(wstr long long) MSVCRT__wcsset_s diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 2a74d51..f5a1fce 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -1121,7 +1121,7 @@ @ cdecl _wcsnicoll(wstr wstr long) MSVCRT__wcsnicoll @ cdecl _wcsnicoll_l(wstr wstr long ptr) MSVCRT__wcsnicoll_l @ cdecl _wcsnset(wstr long long) MSVCRT__wcsnset -# stub _wcsnset_s(wstr long long) +@ cdecl _wcsnset_s(wstr long long long) MSVCRT__wcsnset_s @ cdecl _wcsrev(wstr) MSVCRT__wcsrev @ cdecl _wcsset(wstr long) MSVCRT__wcsset @ cdecl _wcsset_s(wstr long long) MSVCRT__wcsset_s diff --git a/dlls/msvcrt/tests/string.c b/dlls/msvcrt/tests/string.c index 4af55e5..9a1149d 100644 --- a/dlls/msvcrt/tests/string.c +++ b/dlls/msvcrt/tests/string.c @@ -101,6 +101,7 @@ static int (__cdecl *p__atodbl_l)(_CRT_DOUBLE*,char*,_locale_t); static double (__cdecl *p__atof_l)(const char*,_locale_t); static double (__cdecl *p__strtod_l)(const char *,char**,_locale_t); static int (__cdecl *p__strnset_s)(char*,size_t,int,size_t); +static int (__cdecl *p__wcsnset_s)(wchar_t*,size_t,wchar_t,size_t); static int (__cdecl *p__wcsset_s)(wchar_t*,size_t,wchar_t); static size_t (__cdecl *p__mbsnlen)(const unsigned char*, size_t); static int (__cdecl *p__mbccpy_s)(unsigned char*, size_t, int*, const unsigned char*); @@ -3221,6 +3222,45 @@ static void test__strnset_s(void) ok(!buf[0] && buf[1]=='c' && buf[2]=='b', "buf = %s\n", buf); } +static void test__wcsnset_s(void) +{ + wchar_t text[] = { 't','e','x','t',0 }; + int r; + + if(!p__wcsnset_s) { + win_skip("_wcsnset_s not available\n"); + return; + } + + r = p__wcsnset_s(NULL, 0, 'a', 0); + ok(r == 0, "r = %d\n", r); + + r = p__wcsnset_s(text, 0, 'a', 1); + ok(r == EINVAL, "r = %d\n", r); + ok(text[0] == 't', "text[0] = %d\n", text[0]); + + r = p__wcsnset_s(NULL, 2, 'a', 1); + ok(r == EINVAL, "r = %d\n", r); + + r = p__wcsnset_s(text, 2, 'a', 3); + ok(r == EINVAL, "r = %d\n", r); + ok(text[0] == 0, "text[0] = %d\n", text[0]); + ok(text[1] == 'e', "text[1] = %d\n", text[1]); + + text[0] = 't'; + r = p__wcsnset_s(text, 5, 'a', 1); + ok(r == 0, "r = %d\n", r); + ok(text[0] == 'a', "text[0] = %d\n", text[0]); + ok(text[1] == 'e', "text[1] = %d\n", text[1]); + + text[1] = 0; + r = p__wcsnset_s(text, 5, 'b', 3); + ok(r == 0, "r = %d\n", r); + ok(text[0] == 'b', "text[0] = %d\n", text[0]); + ok(text[1] == 0, "text[1] = %d\n", text[1]); + ok(text[2] == 'x', "text[2] = %d\n", text[2]); +} + static void test__wcsset_s(void) { wchar_t str[10]; @@ -3758,6 +3798,7 @@ START_TEST(string) p__atof_l = (void*)GetProcAddress(hMsvcrt, "_atof_l"); p__strtod_l = (void*)GetProcAddress(hMsvcrt, "_strtod_l"); p__strnset_s = (void*)GetProcAddress(hMsvcrt, "_strnset_s"); + p__wcsnset_s = (void*)GetProcAddress(hMsvcrt, "_wcsnset_s"); p__wcsset_s = (void*)GetProcAddress(hMsvcrt, "_wcsset_s"); p__mbsnlen = (void*)GetProcAddress(hMsvcrt, "_mbsnlen"); p__mbccpy_s = (void*)GetProcAddress(hMsvcrt, "_mbccpy_s"); @@ -3824,6 +3865,7 @@ START_TEST(string) test_strncpy(); test_strxfrm(); test__strnset_s(); + test__wcsnset_s(); test__wcsset_s(); test__mbscmp(); test__ismbclx(); diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index a6d7c1f..dc5419c 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -174,6 +174,30 @@ MSVCRT_wchar_t* CDECL MSVCRT__wcsnset( MSVCRT_wchar_t* str, MSVCRT_wchar_t c, MS } /********************************************************************* + * _wcsnset_s (MSVCRT.@) + */ +int CDECL MSVCRT__wcsnset_s( MSVCRT_wchar_t *str, MSVCRT_size_t size, MSVCRT_wchar_t c, MSVCRT_size_t count ) +{ + MSVCRT_size_t i; + + if(!str && !size && !count) return 0; + if(!MSVCRT_CHECK_PMT(str != NULL)) return MSVCRT_EINVAL; + if(!MSVCRT_CHECK_PMT(size > 0)) return MSVCRT_EINVAL; + + for(i=0; i<size-1 && i<count; i++) { + if(!str[i]) return 0; + str[i] = c; + } + for(; i<size; i++) + if(!str[i]) return 0; + + str[0] = 0; + MSVCRT__invalid_parameter(NULL, NULL, NULL, 0, 0); + *MSVCRT__errno() = MSVCRT_EINVAL; + return MSVCRT_EINVAL; +} + +/********************************************************************* * _wcsrev (MSVCRT.@) */ MSVCRT_wchar_t* CDECL MSVCRT__wcsrev( MSVCRT_wchar_t* str ) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index b951154..715f975 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -2032,7 +2032,7 @@ @ cdecl _wcsnicoll(wstr wstr long) MSVCRT__wcsnicoll @ cdecl _wcsnicoll_l(wstr wstr long ptr) MSVCRT__wcsnicoll_l @ cdecl _wcsnset(wstr long long) MSVCRT__wcsnset -@ stub _wcsnset_s +@ cdecl _wcsnset_s(wstr long long long) MSVCRT__wcsnset_s @ cdecl _wcsrev(wstr) MSVCRT__wcsrev @ cdecl _wcsset(wstr long) MSVCRT__wcsset @ cdecl _wcsset_s(wstr long long) MSVCRT__wcsset_s
1
0
0
0
Thomas J. Moore : ntdll: Also try to stat() the drive root.
by Alexandre Julliard
23 Aug '19
23 Aug '19
Module: wine Branch: stable Commit: 2fae324cc476b869e0e083236ca02a62489864c8 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=2fae324cc476b869e0e08323…
Author: Thomas J. Moore <darktjm(a)gmail.com> Date: Thu Apr 4 10:59:09 2019 -0500 ntdll: Also try to stat() the drive root. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=46863
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit 071e729969c5536e3b5958b11d43341803f6bd40) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/ntdll/directory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c index 2719958..85cc869 100644 --- a/dlls/ntdll/directory.c +++ b/dlls/ntdll/directory.c @@ -2646,7 +2646,7 @@ static NTSTATUS lookup_unix_name( const WCHAR *name, int name_len, char **buffer char *p; unix_name[pos + ret] = 0; for (p = unix_name + pos ; *p; p++) if (*p == '\\') *p = '/'; - if (!redirect || (!strstr( unix_name, "/windows/") && strncmp( unix_name, "windows/", 8 ))) + if (!name_len || !redirect || (!strstr( unix_name, "/windows/") && strncmp( unix_name, "windows/", 8 ))) { if (!stat( unix_name, &st )) {
1
0
0
0
Piotr Caban : msvcp140: Don't forward __ExceptionPtrDestroy to msvcr120.
by Alexandre Julliard
23 Aug '19
23 Aug '19
Module: wine Branch: stable Commit: bbb4f68684764ed8cd82d9b21edf4f198e94b36c URL:
https://source.winehq.org/git/wine.git/?a=commit;h=bbb4f68684764ed8cd82d9b2…
Author: Piotr Caban <piotr(a)codeweavers.com> Date: Fri Mar 29 16:04:59 2019 +0100 msvcp140: Don't forward __ExceptionPtrDestroy to msvcr120. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=46800
Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit e7bd1b03da079a4990be37ebdfd536e740548413) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- dlls/msvcp140/msvcp140.spec | 4 ++-- dlls/msvcp90/exception.c | 51 +++++++++++++++++++++++++++++++++++++++++++++ dlls/msvcp90/msvcp90.h | 1 + 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/dlls/msvcp140/msvcp140.spec b/dlls/msvcp140/msvcp140.spec index 20f542e..96dff34 100644 --- a/dlls/msvcp140/msvcp140.spec +++ b/dlls/msvcp140/msvcp140.spec @@ -1701,8 +1701,8 @@ @ cdecl -arch=win64 ?__ExceptionPtrCreate@@YAXPEAX@Z(ptr) __ExceptionPtrCreate @ cdecl -arch=win32 ?__ExceptionPtrCurrentException@@YAXPAX@Z(ptr) msvcr120.?__ExceptionPtrCurrentException@@YAXPAX@Z @ cdecl -arch=win64 ?__ExceptionPtrCurrentException@@YAXPEAX@Z(ptr) msvcr120.?__ExceptionPtrCurrentException@@YAXPEAX@Z -@ cdecl -arch=win32 ?__ExceptionPtrDestroy@@YAXPAX@Z(ptr) msvcr120.?__ExceptionPtrDestroy@@YAXPAX@Z -@ cdecl -arch=win64 ?__ExceptionPtrDestroy@@YAXPEAX@Z(ptr) msvcr120.?__ExceptionPtrDestroy@@YAXPEAX@Z +@ cdecl -arch=win32 ?__ExceptionPtrDestroy@@YAXPAX@Z(ptr) __ExceptionPtrDestroy +@ cdecl -arch=win64 ?__ExceptionPtrDestroy@@YAXPEAX@Z(ptr) __ExceptionPtrDestroy @ cdecl -arch=win32 ?__ExceptionPtrRethrow@@YAXPBX@Z(ptr) msvcr120.?__ExceptionPtrRethrow@@YAXPBX@Z @ cdecl -arch=win64 ?__ExceptionPtrRethrow@@YAXPEBX@Z(ptr) msvcr120.?__ExceptionPtrRethrow@@YAXPEBX@Z @ stub -arch=win32 ?__ExceptionPtrSwap@@YAXPAX0@Z diff --git a/dlls/msvcp90/exception.c b/dlls/msvcp90/exception.c index 5a382e3..142fddf 100644 --- a/dlls/msvcp90/exception.c +++ b/dlls/msvcp90/exception.c @@ -23,7 +23,9 @@ #include "msvcp90.h" #include "windef.h" #include "winbase.h" +#include "winternl.h" #include "wine/debug.h" + WINE_DEFAULT_DEBUG_CHANNEL(msvcp); #define CLASS_IS_SIMPLE_TYPE 1 @@ -956,6 +958,10 @@ typedef struct int *ref; /* not binary compatible with native */ } exception_ptr; +/********************************************************************* + * ?__ExceptionPtrCreate@@YAXPAX@Z + * ?__ExceptionPtrCreate@@YAXPEAX@Z + */ void __cdecl __ExceptionPtrCreate(exception_ptr *ep) { TRACE("(%p)\n", ep); @@ -963,6 +969,51 @@ void __cdecl __ExceptionPtrCreate(exception_ptr *ep) ep->rec = NULL; ep->ref = NULL; } + +#ifdef __i386__ +extern void call_dtor(const cxx_exception_type *type, void *func, void *object); + +__ASM_GLOBAL_FUNC( call_dtor, + "movl 12(%esp),%ecx\n\t" + "call *8(%esp)\n\t" + "ret" ); +#elif __x86_64__ +static inline void call_dtor(const cxx_exception_type *type, unsigned int dtor, void *object) +{ + char *base = RtlPcToFileHeader((void*)type, (void**)&base); + void (__cdecl *func)(void*) = (void*)(base + dtor); + func(object); +} +#else +#define call_dtor(type, func, object) ((void (__cdecl*)(void*))(func))(object) +#endif + +/********************************************************************* + * ?__ExceptionPtrDestroy@@YAXPAX@Z + * ?__ExceptionPtrDestroy@@YAXPEAX@Z + */ +void __cdecl __ExceptionPtrDestroy(exception_ptr *ep) +{ + TRACE("(%p)\n", ep); + + if (!ep->rec) + return; + + if (!InterlockedDecrement(ep->ref)) + { + if (ep->rec->ExceptionCode == CXX_EXCEPTION) + { + const cxx_exception_type *type = (void*)ep->rec->ExceptionInformation[2]; + void *obj = (void*)ep->rec->ExceptionInformation[1]; + + if (type && type->destructor) call_dtor(type, type->destructor, obj); + HeapFree(GetProcessHeap(), 0, obj); + } + + HeapFree(GetProcessHeap(), 0, ep->rec); + HeapFree(GetProcessHeap(), 0, ep->ref); + } +} #endif #if _MSVCP_VER >= 70 || defined(_MSVCIRT) diff --git a/dlls/msvcp90/msvcp90.h b/dlls/msvcp90/msvcp90.h index 40fbe4b..77c96e3 100644 --- a/dlls/msvcp90/msvcp90.h +++ b/dlls/msvcp90/msvcp90.h @@ -20,6 +20,7 @@ #include "windef.h" #include "cxx.h" +#define CXX_EXCEPTION 0xe06d7363 #define ALIGNED_SIZE(size, alignment) (((size)+((alignment)-1))/(alignment)*(alignment)) typedef unsigned char MSVCP_bool;
1
0
0
0
← Newer
1
...
14
15
16
17
18
19
20
...
71
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Results per page:
10
25
50
100
200