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
July
June
May
April
March
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
March 2016
----- 2025 -----
July 2025
June 2025
May 2025
April 2025
March 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
722 discussions
Start a n
N
ew thread
Alistair Leslie-Hughes : include: Add authz.h.
by Alexandre Julliard
17 Mar '16
17 Mar '16
Module: wine Branch: master Commit: 2979978a92402af9f53e2211aebc2a553f3d0277 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=2979978a92402af9f53e2211a…
Author: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Date: Tue Mar 1 17:46:00 2016 +1100 include: Add authz.h. Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/Makefile.in | 1 + include/authz.h | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) diff --git a/include/Makefile.in b/include/Makefile.in index 7e0456e..596c0c9 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -200,6 +200,7 @@ HEADER_SRCS = \ atlwin.h \ audevcod.h \ audiosessiontypes.h \ + authz.h \ aviriff.h \ avrt.h \ basetsd.h \ diff --git a/include/authz.h b/include/authz.h new file mode 100644 index 0000000..42edc8c --- /dev/null +++ b/include/authz.h @@ -0,0 +1,119 @@ +/* + * Copyright (C) 2016 Alistair Leslie-Hughes + * + * 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 + */ + +#ifndef __AUTHZ_H__ +#define __AUTHZ_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +DECLARE_HANDLE(AUTHZ_ACCESS_CHECK_RESULTS_HANDLE); +DECLARE_HANDLE(AUTHZ_CLIENT_CONTEXT_HANDLE); +DECLARE_HANDLE(AUTHZ_RESOURCE_MANAGER_HANDLE); +DECLARE_HANDLE(AUTHZ_AUDIT_EVENT_HANDLE); + +typedef AUTHZ_ACCESS_CHECK_RESULTS_HANDLE *PAUTHZ_ACCESS_CHECK_RESULTS_HANDLE; +typedef AUTHZ_CLIENT_CONTEXT_HANDLE *PAUTHZ_CLIENT_CONTEXT_HANDLE; + +typedef BOOL (CALLBACK *PFN_AUTHZ_COMPUTE_DYNAMIC_GROUPS) ( + AUTHZ_CLIENT_CONTEXT_HANDLE handle, void *args, + PSID_AND_ATTRIBUTES *sid_attr_array, DWORD *sid_cnt, + PSID_AND_ATTRIBUTES *restricted_sid_attr_array, + DWORD *restricted_sid_cnt); + +typedef BOOL (CALLBACK *PFN_AUTHZ_DYNAMIC_ACCESS_CHECK) ( + AUTHZ_CLIENT_CONTEXT_HANDLE handle, PACE_HEADER ace, + void *args, BOOL *ace_applicable); + +typedef VOID (CALLBACK *PFN_AUTHZ_FREE_DYNAMIC_GROUPS) ( + PSID_AND_ATTRIBUTES sid_attr_array); + +typedef struct _AUTHZ_REGISTRATION_OBJECT_TYPE_NAME_OFFSET +{ + WCHAR *szObjectTypeName; + DWORD dwOffset; +} AUTHZ_REGISTRATION_OBJECT_TYPE_NAME_OFFSET, *PAUTHZ_REGISTRATION_OBJECT_TYPE_NAME_OFFSET; + +typedef struct _AUTHZ_ACCESS_REQUEST +{ + ACCESS_MASK DesiredAccess; + PSID PrincipalSelfSid; + POBJECT_TYPE_LIST ObjectTypeList; + DWORD ObjectTypeListLength; + void *OptionalArguments; +} AUTHZ_ACCESS_REQUEST, *PAUTHZ_ACCESS_REQUEST; + + +#define AUTHZ_GENERATE_SUCCESS_AUDIT 0x1 +#define AUTHZ_GENERATE_FAILURE_AUDIT 0x2 + +typedef struct _AUTHZ_ACCESS_REPLY +{ + DWORD ResultListLength; + ACCESS_MASK *GrantedAccessMask; + DWORD *SaclEvaluationResults; + DWORD *Error; +} AUTHZ_ACCESS_REPLY, *PAUTHZ_ACCESS_REPLY; + +typedef struct _AUTHZ_SOURCE_SCHEMA_REGISTRATION +{ + DWORD dwFlags; + WCHAR *szEventSourceName; + WCHAR *szEventMessageFile; + WCHAR *szEventSourceXmlSchemaFile; + WCHAR *szEventAccessStringsFile; + WCHAR *szExecutableImagePath; + + union + { + void *pReserved; + GUID *pProviderGuid; + } DUMMYUNIONNAME; + + DWORD dwObjectTypeNameCount; + AUTHZ_REGISTRATION_OBJECT_TYPE_NAME_OFFSET ObjectTypeNames[ANYSIZE_ARRAY]; +} AUTHZ_SOURCE_SCHEMA_REGISTRATION, *PAUTHZ_SOURCE_SCHEMA_REGISTRATION; + +BOOL WINAPI AuthzInitializeResourceManager(DWORD flags, PFN_AUTHZ_DYNAMIC_ACCESS_CHECK access_checker, + PFN_AUTHZ_COMPUTE_DYNAMIC_GROUPS compute_dyn_groups, PFN_AUTHZ_FREE_DYNAMIC_GROUPS free_dyn_groups, + const WCHAR *managername, AUTHZ_RESOURCE_MANAGER_HANDLE *handle ); + +BOOL WINAPI AuthzInstallSecurityEventSource(DWORD flags, AUTHZ_SOURCE_SCHEMA_REGISTRATION *registration); + +BOOL WINAPI AuthzAccessCheck(DWORD flags, AUTHZ_CLIENT_CONTEXT_HANDLE client_context, + AUTHZ_ACCESS_REQUEST *request, AUTHZ_AUDIT_EVENT_HANDLE audit_event, + PSECURITY_DESCRIPTOR security, PSECURITY_DESCRIPTOR *optional_security, + DWORD optional_security_count, AUTHZ_ACCESS_REPLY *reply, + AUTHZ_ACCESS_CHECK_RESULTS_HANDLE *access_check_result); + +BOOL WINAPI AuthzFreeContext(AUTHZ_CLIENT_CONTEXT_HANDLE client_context); + +BOOL WINAPI AuthzInitializeContextFromSid(DWORD flags, PSID sid, + AUTHZ_RESOURCE_MANAGER_HANDLE resource_manager, LARGE_INTEGER *expire_time, + LUID id, void *dynamic_group, AUTHZ_CLIENT_CONTEXT_HANDLE *client_context); + +BOOL WINAPI AuthzInitializeContextFromToken(DWORD flags, HANDLE token_handle, + AUTHZ_RESOURCE_MANAGER_HANDLE resource_manager, LARGE_INTEGER *expire_time, + LUID id, void *dynamic_group, AUTHZ_CLIENT_CONTEXT_HANDLE *client_context); + +#ifdef __cplusplus +} +#endif + +#endif
1
0
0
0
Jacek Caban : msxml6: Added support for CLSID_XMLSchemaCache60 in XMLSchemaCache60:: QueryInterface.
by Alexandre Julliard
17 Mar '16
17 Mar '16
Module: wine Branch: master Commit: 0df7cb2f190a1e0191a7b3b5333504e0a3788b6b URL:
http://source.winehq.org/git/wine.git/?a=commit;h=0df7cb2f190a1e0191a7b3b53…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Mar 16 17:07:36 2016 +0100 msxml6: Added support for CLSID_XMLSchemaCache60 in XMLSchemaCache60::QueryInterface. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msxml3/schema.c | 12 ++++++++++++ dlls/msxml3/tests/schema.c | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/dlls/msxml3/schema.c b/dlls/msxml3/schema.c index 41d1640..f92130a 100644 --- a/dlls/msxml3/schema.c +++ b/dlls/msxml3/schema.c @@ -1105,6 +1105,18 @@ static HRESULT WINAPI schema_cache_QueryInterface(IXMLDOMSchemaCollection2* ifac { *ppvObject = iface; } + else if(This->version == MSXML6 && IsEqualIID(riid, &CLSID_XMLSchemaCache60)) + { + /* + * Version 6 can be queried for an interface with IID equal to CLSID. + * There is no public interface with that IID and returned pointer + * is equal to returned IXMLDOMSchemaCollection2 iface. We assume + * that it's just another way for querying IXMLDOMSchemaCollection2 + * interface. Office 2013 ClickToRun installer uses this. + */ + WARN("riid CLSID_XMLSchemaCache60, returning IXMLDOMSchemaCollection2 interface.\n"); + *ppvObject = iface; + } else if (dispex_query_interface(&This->dispex, riid, ppvObject)) { return *ppvObject ? S_OK : E_NOINTERFACE; diff --git a/dlls/msxml3/tests/schema.c b/dlls/msxml3/tests/schema.c index bd5c359..8f24e1e 100644 --- a/dlls/msxml3/tests/schema.c +++ b/dlls/msxml3/tests/schema.c @@ -1649,6 +1649,24 @@ static void test_remove(void) free_bstrs(); } +static void test_ifaces(void) +{ + IXMLDOMSchemaCollection2 *cache; + IUnknown *unk; + HRESULT hr; + + cache = create_cache_version(60, &IID_IXMLDOMSchemaCollection2); + if (!cache) return; + + /* CLSID_XMLSchemaCache60 is returned as an interface (the same as IXMLDOMSchemaCollection2). */ + hr = IXMLDOMSchemaCollection2_QueryInterface(cache, &CLSID_XMLSchemaCache60, (void**)&unk); + ok (hr == S_OK, "Could not get CLSID_XMLSchemaCache60 iface: %08x\n", hr); + ok (unk == (IUnknown*)cache, "unk != cache\n"); + + IUnknown_Release(unk); + IXMLDOMSchemaCollection2_Release(cache); +} + START_TEST(schema) { HRESULT r; @@ -1666,6 +1684,7 @@ START_TEST(schema) test_dispex(); test_get(); test_remove(); + test_ifaces(); CoUninitialize(); }
1
0
0
0
Jacek Caban : msxml3: Store xmlnode reference in xmlnodemap object.
by Alexandre Julliard
17 Mar '16
17 Mar '16
Module: wine Branch: master Commit: 8c810372bc8bee1acffea3229f5a42a21d8ce1d7 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=8c810372bc8bee1acffea3229…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Mar 16 13:52:57 2016 +0100 msxml3: Store xmlnode reference in xmlnodemap object. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msxml3/msxml_private.h | 2 ++ dlls/msxml3/node.c | 4 ++-- dlls/msxml3/nodemap.c | 2 ++ dlls/msxml3/tests/domdoc.c | 37 ++++++++++++++++++++++++++++++++++++- 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h index 56be916..b6d8b5d 100644 --- a/dlls/msxml3/msxml_private.h +++ b/dlls/msxml3/msxml_private.h @@ -296,6 +296,8 @@ extern LONG xmldoc_add_ref( xmlDocPtr doc ) DECLSPEC_HIDDEN; extern LONG xmldoc_release( xmlDocPtr doc ) DECLSPEC_HIDDEN; extern LONG xmldoc_add_refs( xmlDocPtr doc, LONG refs ) DECLSPEC_HIDDEN; extern LONG xmldoc_release_refs ( xmlDocPtr doc, LONG refs ) DECLSPEC_HIDDEN; +extern void xmlnode_add_ref(xmlNodePtr node) DECLSPEC_HIDDEN; +extern void xmlnode_release(xmlNodePtr node) DECLSPEC_HIDDEN; extern int xmlnode_get_inst_cnt( xmlnode *node ) DECLSPEC_HIDDEN; extern HRESULT xmldoc_add_orphan( xmlDocPtr doc, xmlNodePtr node ) DECLSPEC_HIDDEN; extern HRESULT xmldoc_remove_orphan( xmlDocPtr doc, xmlNodePtr node ) DECLSPEC_HIDDEN; diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c index 0bc40ff..d39ed57 100644 --- a/dlls/msxml3/node.c +++ b/dlls/msxml3/node.c @@ -431,13 +431,13 @@ int xmlnode_get_inst_cnt(xmlnode *node) /* _private field holds a number of COM instances spawned from this libxml2 node * most significant bits are used to store information about ignorrable whitespace nodes */ -static void xmlnode_add_ref(xmlNodePtr node) +void xmlnode_add_ref(xmlNodePtr node) { if (node->type == XML_DOCUMENT_NODE) return; InterlockedIncrement((LONG*)&node->_private); } -static void xmlnode_release(xmlNodePtr node) +void xmlnode_release(xmlNodePtr node) { if (node->type == XML_DOCUMENT_NODE) return; InterlockedDecrement((LONG*)&node->_private); diff --git a/dlls/msxml3/nodemap.c b/dlls/msxml3/nodemap.c index 2ad6f12..a9fef47 100644 --- a/dlls/msxml3/nodemap.c +++ b/dlls/msxml3/nodemap.c @@ -140,6 +140,7 @@ static ULONG WINAPI xmlnodemap_Release( TRACE("(%p)->(%d)\n", This, ref); if ( ref == 0 ) { + xmlnode_release( This->node ); xmldoc_release( This->node->doc ); if (This->enumvariant) IEnumVARIANT_Release(This->enumvariant); heap_free( This ); @@ -450,6 +451,7 @@ IXMLDOMNamedNodeMap *create_nodemap(xmlNodePtr node, const struct nodemap_funcs init_dispex(&This->dispex, (IUnknown*)&This->IXMLDOMNamedNodeMap_iface, &xmlnodemap_dispex); + xmlnode_add_ref(node); xmldoc_add_ref(node->doc); return &This->IXMLDOMNamedNodeMap_iface; diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 788b39f..de28a70 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -9259,10 +9259,12 @@ static void test_get_attributes(void) { const get_attributes_t *entry = get_attributes; IXMLDOMNamedNodeMap *map; - IXMLDOMDocument *doc; + IXMLDOMDocument *doc, *doc2; IXMLDOMNode *node, *node2; + IXMLDOMElement *elem; VARIANT_BOOL b; HRESULT hr; + VARIANT v; BSTR str; LONG length; @@ -9434,6 +9436,39 @@ static void test_get_attributes(void) IXMLDOMNamedNodeMap_Release(map); + /* append created element a different document, map still works */ + hr = IXMLDOMDocument_createElement(doc, _bstr_("test"), &elem); + ok(hr == S_OK, "createElement failed: %08x\n", hr); + + V_VT(&v) = VT_I4; + V_I4(&v) = 1; + hr = IXMLDOMElement_setAttribute(elem, _bstr_("testattr"), v); + ok(hr == S_OK, "setAttribute failed: %08x\n", hr); + + hr = IXMLDOMElement_get_attributes(elem, &map); + ok(hr == S_OK, "get_attributes failed: %08x\n", hr); + + length = 0; + hr = IXMLDOMNamedNodeMap_get_length(map, &length); + ok(hr == S_OK, "got %08x\n", hr); + ok(length == 1, "got %d\n", length); + + doc2 = create_document(&IID_IXMLDOMDocument); + + hr = IXMLDOMDocument_appendChild(doc2, (IXMLDOMNode*)elem, &node); + ok(hr == S_OK, "appendChild failed: %08x\n", hr); + ok(node == (IXMLDOMNode*)elem, "node != elem\n"); + IXMLDOMNode_Release(node); + IXMLDOMElement_Release(elem); + IXMLDOMDocument_Release(doc2); + + length = 0; + hr = IXMLDOMNamedNodeMap_get_length(map, &length); + ok(hr == S_OK, "got %08x\n", hr); + ok(length == 1, "got %d\n", length); + + IXMLDOMNamedNodeMap_Release(map); + while (entry->type) { VARIANT var;
1
0
0
0
Austin English : bthprops.cpl: Add BluetoothFindFirstRadio/ BluetoothFindRadioClose stubs.
by Alexandre Julliard
17 Mar '16
17 Mar '16
Module: wine Branch: master Commit: 05edc1bd789ce8a5c6f4c73e21b5e3b2d9720dc6 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=05edc1bd789ce8a5c6f4c73e2…
Author: Austin English <austinenglish(a)gmail.com> Date: Fri Dec 4 16:31:12 2015 -0600 bthprops.cpl: Add BluetoothFindFirstRadio/BluetoothFindRadioClose stubs. Signed-off-by: Austin English <austinenglish(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/bthprops.cpl/Makefile.in | 3 + dlls/bthprops.cpl/bthprops.cpl.spec | 4 +- dlls/bthprops.cpl/main.c | 53 ++++++++++ dlls/irprops.cpl/irprops.cpl.spec | 4 +- include/Makefile.in | 2 + include/bluetoothapis.h | 204 ++++++++++++++++++++++++++++++++++++ include/bthsdpdef.h | 92 ++++++++++++++++ 7 files changed, 358 insertions(+), 4 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=05edc1bd789ce8a5c6f4c…
1
0
0
0
Piotr Caban : msvcr80: Use Cxx(Un) RegisterExceptionObject helpers in i386 nested exception handler.
by Alexandre Julliard
17 Mar '16
17 Mar '16
Module: wine Branch: master Commit: 22962616004e9419568808eff0bf799b33282bcf URL:
http://source.winehq.org/git/wine.git/?a=commit;h=22962616004e9419568808eff…
Author: Piotr Caban <piotr(a)codeweavers.com> Date: Wed Mar 16 21:03:19 2016 +0100 msvcr80: Use Cxx(Un)RegisterExceptionObject helpers in i386 nested exception handler. Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- .../api-ms-win-crt-private-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/except.c | 23 ++++++++- dlls/msvcrt/except_arm.c | 9 ---- dlls/msvcrt/except_i386.c | 60 +++------------------- dlls/msvcrt/except_x86_64.c | 9 ---- dlls/msvcrt/msvcrt.h | 3 ++ dlls/ucrtbase/ucrtbase.spec | 2 +- dlls/vcruntime140/vcruntime140.spec | 2 +- 14 files changed, 39 insertions(+), 83 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=22962616004e941956880…
1
0
0
0
Piotr Caban : msvcrt: Add __CxxUnregisterExceptionObject partial implementation.
by Alexandre Julliard
17 Mar '16
17 Mar '16
Module: wine Branch: master Commit: 8348d4b40eb21fb21a314c6c2ca230c3d02b0102 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=8348d4b40eb21fb21a314c6c2…
Author: Piotr Caban <piotr(a)codeweavers.com> Date: Wed Mar 16 21:02:45 2016 +0100 msvcrt: Add __CxxUnregisterExceptionObject partial implementation. Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- .../api-ms-win-crt-private-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/msvcr70/msvcr70.spec | 2 +- dlls/msvcr71/msvcr71.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/except.c | 18 ++++++++++++++++++ dlls/msvcrt/msvcrt.spec | 2 +- dlls/ucrtbase/ucrtbase.spec | 2 +- dlls/vcruntime140/vcruntime140.spec | 2 +- 13 files changed, 30 insertions(+), 12 deletions(-) diff --git a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec index ee32388..4061485 100644 --- a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec +++ b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec @@ -23,7 +23,7 @@ @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) ucrtbase.__CxxLongjmpUnwind @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() ucrtbase.__CxxQueryExceptionSize @ cdecl __CxxRegisterExceptionObject(ptr ptr) ucrtbase.__CxxRegisterExceptionObject -@ stub __CxxUnregisterExceptionObject +@ cdecl __CxxUnregisterExceptionObject(ptr long) ucrtbase.__CxxUnregisterExceptionObject @ cdecl __DestructExceptionObject(ptr) ucrtbase.__DestructExceptionObject @ stub __FrameUnwindFilter @ stub __GetPlatformExceptionInfo diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 73b8688..390ccfb 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -555,7 +555,7 @@ @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) -@ stub __CxxUnregisterExceptionObject +@ cdecl __CxxUnregisterExceptionObject(ptr long) @ cdecl __DestructExceptionObject(ptr) @ stub __FrameUnwindFilter @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 9659942..67edb5a 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -882,7 +882,7 @@ @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) -@ stub __CxxUnregisterExceptionObject +@ cdecl __CxxUnregisterExceptionObject(ptr long) @ cdecl __DestructExceptionObject(ptr) @ stub __FrameUnwindFilter @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index c9f49a3..8417443 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -866,7 +866,7 @@ @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) -@ stub __CxxUnregisterExceptionObject +@ cdecl __CxxUnregisterExceptionObject(ptr long) @ cdecl __DestructExceptionObject(ptr) @ stub __FrameUnwindFilter @ stub __GetPlatformExceptionInfo diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index a8165c9..c58d8f7 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -860,7 +860,7 @@ @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) msvcr120.__CxxLongjmpUnwind @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() msvcr120.__CxxQueryExceptionSize @ cdecl __CxxRegisterExceptionObject(ptr ptr) msvcr120.__CxxRegisterExceptionObject -@ stub __CxxUnregisterExceptionObject +@ cdecl __CxxUnregisterExceptionObject(ptr long) msvcr120.__CxxUnregisterExceptionObject @ cdecl __DestructExceptionObject(ptr) msvcr120.__DestructExceptionObject @ stub __FrameUnwindFilter @ stub __GetPlatformExceptionInfo diff --git a/dlls/msvcr70/msvcr70.spec b/dlls/msvcr70/msvcr70.spec index d7fe789..f236db5 100644 --- a/dlls/msvcr70/msvcr70.spec +++ b/dlls/msvcr70/msvcr70.spec @@ -124,7 +124,7 @@ @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) -@ stub __CxxUnregisterExceptionObject +@ cdecl __CxxUnregisterExceptionObject(ptr long) @ cdecl __DestructExceptionObject(ptr) @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid @ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast diff --git a/dlls/msvcr71/msvcr71.spec b/dlls/msvcr71/msvcr71.spec index 944b437..5414dc6 100644 --- a/dlls/msvcr71/msvcr71.spec +++ b/dlls/msvcr71/msvcr71.spec @@ -119,7 +119,7 @@ @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) -@ stub __CxxUnregisterExceptionObject +@ cdecl __CxxUnregisterExceptionObject(ptr long) @ cdecl __DestructExceptionObject(ptr) @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid @ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 84f0f58..0fb6f19 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -189,7 +189,7 @@ @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) -@ stub __CxxUnregisterExceptionObject +@ cdecl __CxxUnregisterExceptionObject(ptr long) @ cdecl __DestructExceptionObject(ptr) @ stub __FrameUnwindFilter @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index db99449..7f81b74 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -180,7 +180,7 @@ @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) -@ stub __CxxUnregisterExceptionObject +@ cdecl __CxxUnregisterExceptionObject(ptr long) @ cdecl __DestructExceptionObject(ptr) @ stub __FrameUnwindFilter @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c index f950707..903daa5 100644 --- a/dlls/msvcrt/except.c +++ b/dlls/msvcrt/except.c @@ -416,3 +416,21 @@ BOOL CDECL __CxxRegisterExceptionObject(EXCEPTION_RECORD **rec, cxx_frame_info * _CreateFrameInfo(&frame_info->frame_info, (void*)(*rec)->ExceptionInformation[1]); return TRUE; } + +/********************************************************************* + * __CxxUnregisterExceptionObject (MSVCRT.@) + */ +void CDECL __CxxUnregisterExceptionObject(cxx_frame_info *frame_info, BOOL in_use) +{ + thread_data_t *data = msvcrt_get_thread_data(); + + FIXME("(%p) semi-stub\n", frame_info); + + if(frame_info->rec == (void*)-1) + return; + + _FindAndUnlinkFrame(&frame_info->frame_info); + if(data->exc_record->ExceptionCode == CXX_EXCEPTION && !in_use) /* FIXME: use _IsExceptionObjectToBeDestroyed here */ + __DestructExceptionObject(data->exc_record); + data->exc_record = frame_info->rec; +} diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 3093cd4..d485a0e 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -185,7 +185,7 @@ @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) -# stub __CxxUnregisterExceptionObject +@ cdecl __CxxUnregisterExceptionObject(ptr long) @ cdecl __DestructExceptionObject(ptr) @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid @ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index e85ae8a..d66148c 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -57,7 +57,7 @@ @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) -@ stub __CxxUnregisterExceptionObject +@ cdecl __CxxUnregisterExceptionObject(ptr long) @ cdecl __DestructExceptionObject(ptr) @ stub __FrameUnwindFilter @ stub __GetPlatformExceptionInfo diff --git a/dlls/vcruntime140/vcruntime140.spec b/dlls/vcruntime140/vcruntime140.spec index f0b11fd..574ce15 100644 --- a/dlls/vcruntime140/vcruntime140.spec +++ b/dlls/vcruntime140/vcruntime140.spec @@ -20,7 +20,7 @@ @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) ucrtbase.__CxxLongjmpUnwind @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() ucrtbase.__CxxQueryExceptionSize @ cdecl __CxxRegisterExceptionObject(ptr ptr) ucrtbase.__CxxRegisterExceptionObject -@ stub __CxxUnregisterExceptionObject +@ cdecl __CxxUnregisterExceptionObject(ptr long) ucrtbase.__CxxUnregisterExceptionObject @ cdecl __DestructExceptionObject(ptr) ucrtbase.__DestructExceptionObject @ stub __FrameUnwindFilter @ stub __GetPlatformExceptionInfo
1
0
0
0
Piotr Caban : msvcrt: Add __DestructExceptionObject implementation.
by Alexandre Julliard
17 Mar '16
17 Mar '16
Module: wine Branch: master Commit: 76411c8dc5b1d49f67f0a212c16bcaac7bedad12 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=76411c8dc5b1d49f67f0a212c…
Author: Piotr Caban <piotr(a)codeweavers.com> Date: Wed Mar 16 21:02:08 2016 +0100 msvcrt: Add __DestructExceptionObject implementation. Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- .../api-ms-win-crt-private-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/msvcr70/msvcr70.spec | 2 +- dlls/msvcr71/msvcr71.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/except.c | 24 ++++++++++++++++++++++ dlls/msvcrt/msvcrt.spec | 2 +- dlls/ucrtbase/ucrtbase.spec | 2 +- dlls/vcruntime140/vcruntime140.spec | 2 +- 13 files changed, 36 insertions(+), 12 deletions(-) diff --git a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec index 2fa639c..ee32388 100644 --- a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec +++ b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec @@ -24,7 +24,7 @@ @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() ucrtbase.__CxxQueryExceptionSize @ cdecl __CxxRegisterExceptionObject(ptr ptr) ucrtbase.__CxxRegisterExceptionObject @ stub __CxxUnregisterExceptionObject -@ stub __DestructExceptionObject +@ cdecl __DestructExceptionObject(ptr) ucrtbase.__DestructExceptionObject @ stub __FrameUnwindFilter @ stub __GetPlatformExceptionInfo @ stub __NLG_Dispatch2 diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index cfce956..73b8688 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -556,7 +556,7 @@ @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject -@ stub __DestructExceptionObject +@ cdecl __DestructExceptionObject(ptr) @ stub __FrameUnwindFilter @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid @ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 84b50e1..9659942 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -883,7 +883,7 @@ @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject -@ stub __DestructExceptionObject +@ cdecl __DestructExceptionObject(ptr) @ stub __FrameUnwindFilter @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid @ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 29c6965..c9f49a3 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -867,7 +867,7 @@ @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject -@ stub __DestructExceptionObject +@ cdecl __DestructExceptionObject(ptr) @ stub __FrameUnwindFilter @ stub __GetPlatformExceptionInfo @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index 51d3ef0..a8165c9 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -861,7 +861,7 @@ @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() msvcr120.__CxxQueryExceptionSize @ cdecl __CxxRegisterExceptionObject(ptr ptr) msvcr120.__CxxRegisterExceptionObject @ stub __CxxUnregisterExceptionObject -@ stub __DestructExceptionObject +@ cdecl __DestructExceptionObject(ptr) msvcr120.__DestructExceptionObject @ stub __FrameUnwindFilter @ stub __GetPlatformExceptionInfo @ cdecl __RTCastToVoid(ptr) msvcr120.__RTCastToVoid diff --git a/dlls/msvcr70/msvcr70.spec b/dlls/msvcr70/msvcr70.spec index a4e0279..d7fe789 100644 --- a/dlls/msvcr70/msvcr70.spec +++ b/dlls/msvcr70/msvcr70.spec @@ -125,7 +125,7 @@ @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject -@ stub __DestructExceptionObject +@ cdecl __DestructExceptionObject(ptr) @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid @ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast @ cdecl __RTtypeid(ptr) MSVCRT___RTtypeid diff --git a/dlls/msvcr71/msvcr71.spec b/dlls/msvcr71/msvcr71.spec index 31d80b2..944b437 100644 --- a/dlls/msvcr71/msvcr71.spec +++ b/dlls/msvcr71/msvcr71.spec @@ -120,7 +120,7 @@ @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject -@ stub __DestructExceptionObject +@ cdecl __DestructExceptionObject(ptr) @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid @ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast @ cdecl __RTtypeid(ptr) MSVCRT___RTtypeid diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 36d1058..84f0f58 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -190,7 +190,7 @@ @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject -@ stub __DestructExceptionObject +@ cdecl __DestructExceptionObject(ptr) @ stub __FrameUnwindFilter @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid @ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 56448bc..db99449 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -181,7 +181,7 @@ @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject -@ stub __DestructExceptionObject +@ cdecl __DestructExceptionObject(ptr) @ stub __FrameUnwindFilter @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid @ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c index a7ae0da..f950707 100644 --- a/dlls/msvcrt/except.c +++ b/dlls/msvcrt/except.c @@ -37,6 +37,8 @@ #include "wincon.h" #include "wine/debug.h" +#include "cppexcept.h" + WINE_DEFAULT_DEBUG_CHANNEL(seh); static MSVCRT_security_error_handler security_error_handler; @@ -371,6 +373,28 @@ void CDECL _FindAndUnlinkFrame(frame_info *fi) } /********************************************************************* + * __DestructExceptionObject (MSVCRT.@) + */ +void CDECL __DestructExceptionObject(EXCEPTION_RECORD *rec) +{ + cxx_exception_type *info = (cxx_exception_type*) rec->ExceptionInformation[2]; + void *object = (void*)rec->ExceptionInformation[1]; + + TRACE("(%p)\n", rec); + + if (!info || !info->destructor) + return; + +#if defined(__i386__) + __asm__ __volatile__("call *%0" : : "r" (info->destructor), "c" (object) : "eax", "edx", "memory" ); +#elif defined(__x86_64__) + ((void (__cdecl*)(void*))(info->destructor+rec->ExceptionInformation[3]))(object); +#else + ((void (__cdecl*)(void*))info->destructor)(object); +#endif +} + +/********************************************************************* * __CxxRegisterExceptionObject (MSVCRT.@) */ BOOL CDECL __CxxRegisterExceptionObject(EXCEPTION_RECORD **rec, cxx_frame_info *frame_info) diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index a96ac35..3093cd4 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -186,7 +186,7 @@ @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) # stub __CxxUnregisterExceptionObject -# stub __DestructExceptionObject +@ cdecl __DestructExceptionObject(ptr) @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid @ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast @ cdecl __RTtypeid(ptr) MSVCRT___RTtypeid diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index d286bf3..e85ae8a 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -58,7 +58,7 @@ @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() @ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject -@ stub __DestructExceptionObject +@ cdecl __DestructExceptionObject(ptr) @ stub __FrameUnwindFilter @ stub __GetPlatformExceptionInfo @ stub __NLG_Dispatch2 diff --git a/dlls/vcruntime140/vcruntime140.spec b/dlls/vcruntime140/vcruntime140.spec index 2ba8f1e..f0b11fd 100644 --- a/dlls/vcruntime140/vcruntime140.spec +++ b/dlls/vcruntime140/vcruntime140.spec @@ -21,7 +21,7 @@ @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() ucrtbase.__CxxQueryExceptionSize @ cdecl __CxxRegisterExceptionObject(ptr ptr) ucrtbase.__CxxRegisterExceptionObject @ stub __CxxUnregisterExceptionObject -@ stub __DestructExceptionObject +@ cdecl __DestructExceptionObject(ptr) ucrtbase.__DestructExceptionObject @ stub __FrameUnwindFilter @ stub __GetPlatformExceptionInfo @ stub __NLG_Dispatch2
1
0
0
0
Piotr Caban : msvcrt: Add __CxxRegisterExceptionObject implementation.
by Alexandre Julliard
17 Mar '16
17 Mar '16
Module: wine Branch: master Commit: 11ccffea08f993aaf94aa1b2a36dd3594e5a9d43 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=11ccffea08f993aaf94aa1b2a…
Author: Piotr Caban <piotr(a)codeweavers.com> Date: Wed Mar 16 21:02:04 2016 +0100 msvcrt: Add __CxxRegisterExceptionObject implementation. Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- .../api-ms-win-crt-private-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/msvcr70/msvcr70.spec | 2 +- dlls/msvcr71/msvcr71.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/except.c | 23 ++++++++++++++++++++++ dlls/msvcrt/msvcrt.h | 7 +++++++ dlls/msvcrt/msvcrt.spec | 2 +- dlls/ucrtbase/ucrtbase.spec | 2 +- dlls/vcruntime140/vcruntime140.spec | 2 +- 14 files changed, 42 insertions(+), 12 deletions(-) diff --git a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec index f26b932..2fa639c 100644 --- a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec +++ b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec @@ -22,7 +22,7 @@ @ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler3(ptr ptr ptr ptr) ucrtbase.__CxxFrameHandler3 @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) ucrtbase.__CxxLongjmpUnwind @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() ucrtbase.__CxxQueryExceptionSize -@ stub __CxxRegisterExceptionObject +@ cdecl __CxxRegisterExceptionObject(ptr ptr) ucrtbase.__CxxRegisterExceptionObject @ stub __CxxUnregisterExceptionObject @ stub __DestructExceptionObject @ stub __FrameUnwindFilter diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 33473b8..cfce956 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -554,7 +554,7 @@ @ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler3(ptr ptr ptr ptr) __CxxFrameHandler @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() -@ stub __CxxRegisterExceptionObject +@ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject @ stub __DestructExceptionObject @ stub __FrameUnwindFilter diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 6299a4f..84b50e1 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -881,7 +881,7 @@ @ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler3(ptr ptr ptr ptr) __CxxFrameHandler @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() -@ stub __CxxRegisterExceptionObject +@ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject @ stub __DestructExceptionObject @ stub __FrameUnwindFilter diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index bb1ae34..29c6965 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -865,7 +865,7 @@ @ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler3(ptr ptr ptr ptr) __CxxFrameHandler @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() -@ stub __CxxRegisterExceptionObject +@ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject @ stub __DestructExceptionObject @ stub __FrameUnwindFilter diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index 694230f..51d3ef0 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -859,7 +859,7 @@ @ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler3(ptr ptr ptr ptr) msvcr120.__CxxFrameHandler3 @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) msvcr120.__CxxLongjmpUnwind @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() msvcr120.__CxxQueryExceptionSize -@ stub __CxxRegisterExceptionObject +@ cdecl __CxxRegisterExceptionObject(ptr ptr) msvcr120.__CxxRegisterExceptionObject @ stub __CxxUnregisterExceptionObject @ stub __DestructExceptionObject @ stub __FrameUnwindFilter diff --git a/dlls/msvcr70/msvcr70.spec b/dlls/msvcr70/msvcr70.spec index e1911d0..a4e0279 100644 --- a/dlls/msvcr70/msvcr70.spec +++ b/dlls/msvcr70/msvcr70.spec @@ -123,7 +123,7 @@ @ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler(ptr ptr ptr ptr) @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() -@ stub __CxxRegisterExceptionObject +@ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject @ stub __DestructExceptionObject @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid diff --git a/dlls/msvcr71/msvcr71.spec b/dlls/msvcr71/msvcr71.spec index c3ed3a4..31d80b2 100644 --- a/dlls/msvcr71/msvcr71.spec +++ b/dlls/msvcr71/msvcr71.spec @@ -118,7 +118,7 @@ @ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler(ptr ptr ptr ptr) @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() -@ stub __CxxRegisterExceptionObject +@ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject @ stub __DestructExceptionObject @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index ccf7357..36d1058 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -188,7 +188,7 @@ @ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler3(ptr ptr ptr ptr) __CxxFrameHandler @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() -@ stub __CxxRegisterExceptionObject +@ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject @ stub __DestructExceptionObject @ stub __FrameUnwindFilter diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 43de82a..56448bc 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -179,7 +179,7 @@ @ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler3(ptr ptr ptr ptr) __CxxFrameHandler @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() -@ stub __CxxRegisterExceptionObject +@ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject @ stub __DestructExceptionObject @ stub __FrameUnwindFilter diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c index ec923b1..a7ae0da 100644 --- a/dlls/msvcrt/except.c +++ b/dlls/msvcrt/except.c @@ -369,3 +369,26 @@ void CDECL _FindAndUnlinkFrame(frame_info *fi) ERR("frame not found, native crashes in this case\n"); } + +/********************************************************************* + * __CxxRegisterExceptionObject (MSVCRT.@) + */ +BOOL CDECL __CxxRegisterExceptionObject(EXCEPTION_RECORD **rec, cxx_frame_info *frame_info) +{ + thread_data_t *data = msvcrt_get_thread_data(); + + TRACE("(%p, %p)\n", rec, frame_info); + + if (!rec || !*rec) + { + frame_info->rec = (void*)-1; + frame_info->unk = (void*)-1; + return TRUE; + } + + frame_info->rec = data->exc_record; + frame_info->unk = 0; + data->exc_record = *rec; + _CreateFrameInfo(&frame_info->frame_info, (void*)(*rec)->ExceptionInformation[1]); + return TRUE; +} diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h index 64a7ab9..d0893fd 100644 --- a/dlls/msvcrt/msvcrt.h +++ b/dlls/msvcrt/msvcrt.h @@ -210,6 +210,13 @@ typedef struct _frame_info struct _frame_info *next; } frame_info; +typedef struct +{ + frame_info frame_info; + EXCEPTION_RECORD *rec; + void *unk; +} cxx_frame_info; + /* TLS data */ extern DWORD msvcrt_tls_index DECLSPEC_HIDDEN; diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 67b5c8c..a96ac35 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -184,7 +184,7 @@ @ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler3(ptr ptr ptr ptr) __CxxFrameHandler @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() -# stub __CxxRegisterExceptionObject +@ cdecl __CxxRegisterExceptionObject(ptr ptr) # stub __CxxUnregisterExceptionObject # stub __DestructExceptionObject @ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 44b62a7..d286bf3 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -56,7 +56,7 @@ @ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler3(ptr ptr ptr ptr) __CxxFrameHandler @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() -@ stub __CxxRegisterExceptionObject +@ cdecl __CxxRegisterExceptionObject(ptr ptr) @ stub __CxxUnregisterExceptionObject @ stub __DestructExceptionObject @ stub __FrameUnwindFilter diff --git a/dlls/vcruntime140/vcruntime140.spec b/dlls/vcruntime140/vcruntime140.spec index ea58694..2ba8f1e 100644 --- a/dlls/vcruntime140/vcruntime140.spec +++ b/dlls/vcruntime140/vcruntime140.spec @@ -19,7 +19,7 @@ @ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler3(ptr ptr ptr ptr) ucrtbase.__CxxFrameHandler3 @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr) ucrtbase.__CxxLongjmpUnwind @ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize() ucrtbase.__CxxQueryExceptionSize -@ stub __CxxRegisterExceptionObject +@ cdecl __CxxRegisterExceptionObject(ptr ptr) ucrtbase.__CxxRegisterExceptionObject @ stub __CxxUnregisterExceptionObject @ stub __DestructExceptionObject @ stub __FrameUnwindFilter
1
0
0
0
Piotr Caban : msvcr80: Add _FindAndUnlinkFrame implementation.
by Alexandre Julliard
17 Mar '16
17 Mar '16
Module: wine Branch: master Commit: 29f547d2ce03b4ffcccc2e4405d337a6d44cd3e8 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=29f547d2ce03b4ffcccc2e440…
Author: Piotr Caban <piotr(a)codeweavers.com> Date: Wed Mar 16 21:01:55 2016 +0100 msvcr80: Add _FindAndUnlinkFrame implementation. Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- .../api-ms-win-crt-private-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/except.c | 28 ++++++++++++++++++++++ dlls/ucrtbase/ucrtbase.spec | 2 +- dlls/vcruntime140/vcruntime140.spec | 2 +- 10 files changed, 37 insertions(+), 9 deletions(-) diff --git a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec index 619425f..f26b932 100644 --- a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec +++ b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec @@ -1,7 +1,7 @@ @ cdecl _CreateFrameInfo(ptr ptr) ucrtbase._CreateFrameInfo @ stdcall _CxxThrowException(long long) ucrtbase._CxxThrowException @ cdecl -arch=i386 -norelay _EH_prolog() ucrtbase._EH_prolog -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) ucrtbase._FindAndUnlinkFrame @ stub _GetImageBase @ stub _GetThrowImageBase @ cdecl -arch=i386,x86_64,arm _IsExceptionObjectToBeDestroyed(ptr) ucrtbase._IsExceptionObjectToBeDestroyed diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 7d6886a..33473b8 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -525,7 +525,7 @@ @ cdecl _CreateFrameInfo(ptr ptr) @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) @ cdecl _Getdays() @ cdecl _Getmonths() @ cdecl _Gettnames() diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 73b84e7..6299a4f 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -846,7 +846,7 @@ @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() @ stub -arch=arm _FPE_Raise -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) @ stub -arch=win64 _GetImageBase @ stub -arch=win64 _GetThrowImageBase @ cdecl _Getdays() diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 7b274c9..bb1ae34 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -830,7 +830,7 @@ @ cdecl -arch=i386 -norelay _EH_prolog() @ stub -arch=arm _FPE_Raise @ stub _FCbuild -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) @ stub -arch=win64 _GetImageBase @ stub -arch=win64 _GetThrowImageBase @ cdecl _Getdays() diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index dffe875..694230f 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -824,7 +824,7 @@ @ cdecl -arch=i386 -norelay _EH_prolog() msvcr120._EH_prolog @ stub -arch=arm _FPE_Raise @ stub _FCbuild -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) msvcr120._FindAndUnlinkFrame @ stub -arch=win64 _GetImageBase @ stub -arch=win64 _GetThrowImageBase @ cdecl _Getdays() msvcr120._Getdays diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 1035b62..ccf7357 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -155,7 +155,7 @@ @ cdecl _CreateFrameInfo(ptr ptr) @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) @ stub -arch=win64 _GetImageBase @ stub -arch=win64 _GetThrowImageBase @ cdecl _Getdays() diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index cac6775..43de82a 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -152,7 +152,7 @@ @ cdecl _CreateFrameInfo(ptr ptr) @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) @ cdecl _Getdays() @ cdecl _Getmonths() @ cdecl _Gettnames() diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c index a204d62..ec923b1 100644 --- a/dlls/msvcrt/except.c +++ b/dlls/msvcrt/except.c @@ -341,3 +341,31 @@ frame_info* CDECL _CreateFrameInfo(frame_info *fi, void *obj) fi->object = obj; return fi; } + +/********************************************************************* + * _FindAndUnlinkFrame (MSVCR80.@) + */ +void CDECL _FindAndUnlinkFrame(frame_info *fi) +{ + thread_data_t *data = msvcrt_get_thread_data(); + frame_info *cur = data->frame_info_head; + + TRACE("(%p)\n", fi); + + if (cur == fi) + { + data->frame_info_head = cur->next; + return; + } + + for (; cur->next; cur = cur->next) + { + if (cur->next == fi) + { + cur->next = fi->next; + return; + } + } + + ERR("frame not found, native crashes in this case\n"); +} diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index df7c02e..44b62a7 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -24,7 +24,7 @@ @ stub _FCbuild @ stub _FCmulcc @ stub _FCmulcr -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) @ stub _GetImageBase @ stub _GetThrowImageBase @ cdecl _Getdays() diff --git a/dlls/vcruntime140/vcruntime140.spec b/dlls/vcruntime140/vcruntime140.spec index c5e0c4f..ea58694 100644 --- a/dlls/vcruntime140/vcruntime140.spec +++ b/dlls/vcruntime140/vcruntime140.spec @@ -1,7 +1,7 @@ @ cdecl _CreateFrameInfo(ptr ptr) ucrtbase._CreateFrameInfo @ stdcall _CxxThrowException(long long) ucrtbase._CxxThrowException @ cdecl -arch=i386 -norelay _EH_prolog() ucrtbase._EH_prolog -@ stub _FindAndUnlinkFrame +@ cdecl _FindAndUnlinkFrame(ptr) ucrtbase._FindAndUnlinkFrame @ cdecl -arch=i386,x86_64,arm _IsExceptionObjectToBeDestroyed(ptr) ucrtbase._IsExceptionObjectToBeDestroyed @ stub _NLG_Dispatch2 @ stub _NLG_Return
1
0
0
0
Piotr Caban : msvcr80: Add _CreateFrameInfo implementation.
by Alexandre Julliard
17 Mar '16
17 Mar '16
Module: wine Branch: master Commit: 020451740158aa6bdb8e8f3b4f9af899ca615d9b URL:
http://source.winehq.org/git/wine.git/?a=commit;h=020451740158aa6bdb8e8f3b4…
Author: Piotr Caban <piotr(a)codeweavers.com> Date: Wed Mar 16 21:01:50 2016 +0100 msvcr80: Add _CreateFrameInfo implementation. Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- .../api-ms-win-crt-private-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/except.c | 15 +++++++++++++++ dlls/msvcrt/except_i386.c | 7 +++++++ dlls/msvcrt/msvcrt.h | 8 +++++++- dlls/ucrtbase/ucrtbase.spec | 2 +- dlls/vcruntime140/vcruntime140.spec | 2 +- 12 files changed, 38 insertions(+), 10 deletions(-) diff --git a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec index 8674f44..619425f 100644 --- a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec +++ b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec @@ -1,4 +1,4 @@ -@ stub _CreateFrameInfo +@ cdecl _CreateFrameInfo(ptr ptr) ucrtbase._CreateFrameInfo @ stdcall _CxxThrowException(long long) ucrtbase._CxxThrowException @ cdecl -arch=i386 -norelay _EH_prolog() ucrtbase._EH_prolog @ stub _FindAndUnlinkFrame diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 15a446f..7d6886a 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -522,7 +522,7 @@ @ cdecl -arch=i386 _CItanh() @ cdecl _CRT_RTC_INIT(ptr ptr long long long) @ cdecl _CRT_RTC_INITW(ptr ptr long long long) -@ stub _CreateFrameInfo +@ cdecl _CreateFrameInfo(ptr ptr) @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() @ stub _FindAndUnlinkFrame diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index ccc659f..73b84e7 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -842,7 +842,7 @@ @ cdecl -arch=i386 _CItanh() @ cdecl _CRT_RTC_INIT(ptr ptr long long long) @ cdecl _CRT_RTC_INITW(ptr ptr long long long) -@ stub _CreateFrameInfo +@ cdecl _CreateFrameInfo(ptr ptr) @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() @ stub -arch=arm _FPE_Raise diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 5f17e06..7b274c9 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -825,7 +825,7 @@ @ cdecl _CRT_RTC_INIT(ptr ptr long long long) @ cdecl _CRT_RTC_INITW(ptr ptr long long long) @ stub _Cbuild -@ stub _CreateFrameInfo +@ cdecl _CreateFrameInfo(ptr ptr) @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() @ stub -arch=arm _FPE_Raise diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index e978d20..dffe875 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -819,7 +819,7 @@ @ cdecl -arch=i386 _CItan() msvcr120._CItan @ cdecl -arch=i386 _CItanh() msvcr120._CItanh @ stub _Cbuild -@ stub _CreateFrameInfo +@ cdecl _CreateFrameInfo(ptr ptr) msvcr120._CreateFrameInfo @ stdcall _CxxThrowException(long long) msvcr120._CxxThrowException @ cdecl -arch=i386 -norelay _EH_prolog() msvcr120._EH_prolog @ stub -arch=arm _FPE_Raise diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 4df2215..1035b62 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -152,7 +152,7 @@ @ cdecl -arch=i386 _CItanh() @ cdecl _CRT_RTC_INIT(ptr ptr long long long) @ cdecl _CRT_RTC_INITW(ptr ptr long long long) -@ stub _CreateFrameInfo +@ cdecl _CreateFrameInfo(ptr ptr) @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() @ stub _FindAndUnlinkFrame diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 4bb2adb..cac6775 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -149,7 +149,7 @@ @ cdecl -arch=i386 _CItanh() @ cdecl _CRT_RTC_INIT(ptr ptr long long long) @ cdecl _CRT_RTC_INITW(ptr ptr long long long) -@ stub _CreateFrameInfo +@ cdecl _CreateFrameInfo(ptr ptr) @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() @ stub _FindAndUnlinkFrame diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c index f5c8b03..a204d62 100644 --- a/dlls/msvcrt/except.c +++ b/dlls/msvcrt/except.c @@ -326,3 +326,18 @@ LPTOP_LEVEL_EXCEPTION_FILTER CDECL MSVCR110__crtSetUnhandledExceptionFilter(LPTO { return SetUnhandledExceptionFilter(filter); } + +/********************************************************************* + * _CreateFrameInfo (MSVCR80.@) + */ +frame_info* CDECL _CreateFrameInfo(frame_info *fi, void *obj) +{ + thread_data_t *data = msvcrt_get_thread_data(); + + TRACE("(%p, %p)\n", fi, obj); + + fi->next = data->frame_info_head; + data->frame_info_head = fi; + fi->object = obj; + return fi; +} diff --git a/dlls/msvcrt/except_i386.c b/dlls/msvcrt/except_i386.c index 78ce488..4569572 100644 --- a/dlls/msvcrt/except_i386.c +++ b/dlls/msvcrt/except_i386.c @@ -414,6 +414,7 @@ static DWORD catch_function_nested_handler( EXCEPTION_RECORD *rec, EXCEPTION_REG BOOL __cdecl _IsExceptionObjectToBeDestroyed(const void *obj) { EXCEPTION_REGISTRATION_RECORD *reg = NtCurrentTeb()->Tib.ExceptionList; + frame_info *cur; TRACE( "%p\n", obj ); @@ -432,6 +433,12 @@ BOOL __cdecl _IsExceptionObjectToBeDestroyed(const void *obj) reg = reg->Prev; } + for (cur = msvcrt_get_thread_data()->frame_info_head; cur; cur = cur->next) + { + if (cur->object == obj) + return FALSE; + } + return TRUE; } diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h index aff1741..64a7ab9 100644 --- a/dlls/msvcrt/msvcrt.h +++ b/dlls/msvcrt/msvcrt.h @@ -204,6 +204,11 @@ typedef struct MSVCRT_localeinfo_struct MSVCRT_pthreadmbcinfo mbcinfo; } MSVCRT__locale_tstruct, *MSVCRT__locale_t; +typedef struct _frame_info +{ + void *object; + struct _frame_info *next; +} frame_info; /* TLS data */ extern DWORD msvcrt_tls_index DECLSPEC_HIDDEN; @@ -242,7 +247,8 @@ struct __thread_data { void *unk6[3]; int unk7; EXCEPTION_RECORD *exc_record; - void *unk8[7]; + frame_info *frame_info_head; + void *unk8[6]; LCID cached_lcid; int unk9[3]; DWORD cached_cp; diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 16540a5..df7c02e 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -17,7 +17,7 @@ @ stub _Cbuild @ stub _Cmulcc @ stub _Cmulcr -@ stub _CreateFrameInfo +@ cdecl _CreateFrameInfo(ptr ptr) @ stdcall _CxxThrowException(long long) @ cdecl -arch=i386 -norelay _EH_prolog() @ stub _Exit diff --git a/dlls/vcruntime140/vcruntime140.spec b/dlls/vcruntime140/vcruntime140.spec index c518b15..c5e0c4f 100644 --- a/dlls/vcruntime140/vcruntime140.spec +++ b/dlls/vcruntime140/vcruntime140.spec @@ -1,4 +1,4 @@ -@ stub _CreateFrameInfo +@ cdecl _CreateFrameInfo(ptr ptr) ucrtbase._CreateFrameInfo @ stdcall _CxxThrowException(long long) ucrtbase._CxxThrowException @ cdecl -arch=i386 -norelay _EH_prolog() ucrtbase._EH_prolog @ stub _FindAndUnlinkFrame
1
0
0
0
← Newer
1
...
33
34
35
36
37
38
39
...
73
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
72
73
Results per page:
10
25
50
100
200