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
November 2020
----- 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
1 participants
851 discussions
Start a n
N
ew thread
Nikolay Sivov : combase: Update thread flags when entering/leaving apartments.
by Alexandre Julliard
19 Nov '20
19 Nov '20
Module: wine Branch: master Commit: 7cae17c134ed7fd7c8b6bd41f4a41cb095d6d859 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=7cae17c134ed7fd7c8b6bd41…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Thu Nov 19 13:40:32 2020 +0000 combase: Update thread flags when entering/leaving apartments. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/combase/apartment.c | 10 +++++++++- dlls/combase/combase_private.h | 3 +++ dlls/ole32/tests/compobj.c | 3 --- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/dlls/combase/apartment.c b/dlls/combase/apartment.c index 1181e393ada..108d6a71c5c 100644 --- a/dlls/combase/apartment.c +++ b/dlls/combase/apartment.c @@ -556,6 +556,8 @@ static struct apartment *apartment_get_or_create(DWORD model) if (!apt) { + com_get_tlsdata(&data); + if (model & COINIT_APARTMENTTHREADED) { EnterCriticalSection(&apt_cs); @@ -568,6 +570,10 @@ static struct apartment *apartment_get_or_create(DWORD model) TRACE("Created main-threaded apartment with OXID %s\n", wine_dbgstr_longlong(apt->oxid)); } + data->flags |= OLETLS_APARTMENTTHREADED; + if (model & COINIT_DISABLE_OLE1DDE) + data->flags |= OLETLS_DISABLE_OLE1DDE; + LeaveCriticalSection(&apt_cs); if (apt->main) @@ -588,11 +594,12 @@ static struct apartment *apartment_get_or_create(DWORD model) else mta = apartment_construct(model); + data->flags |= OLETLS_MULTITHREADED | OLETLS_DISABLE_OLE1DDE; + apt = mta; LeaveCriticalSection(&apt_cs); } - com_get_tlsdata(&data); data->apt = apt; } @@ -1146,6 +1153,7 @@ void leave_apartment(struct tlsdata *data) WARN( "Uninitializing apartment while Ole is still initialized\n" ); apartment_release(data->apt); data->apt = NULL; + data->flags &= ~(OLETLS_DISABLE_OLE1DDE | OLETLS_APARTMENTTHREADED | OLETLS_MULTITHREADED); } } diff --git a/dlls/combase/combase_private.h b/dlls/combase/combase_private.h index 46a7c7f655d..9247af4ebb6 100644 --- a/dlls/combase/combase_private.h +++ b/dlls/combase/combase_private.h @@ -66,6 +66,9 @@ HRESULT open_appidkey_from_clsid(REFCLSID clsid, REGSAM access, HKEY *subkey) DE enum tlsdata_flags { OLETLS_UUIDINITIALIZED = 0x2, + OLETLS_DISABLE_OLE1DDE = 0x40, + OLETLS_APARTMENTTHREADED = 0x80, + OLETLS_MULTITHREADED = 0x100, }; /* this is what is stored in TEB->ReservedForOle */ diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c index c79e379f92a..5d44cd5a0ba 100644 --- a/dlls/ole32/tests/compobj.c +++ b/dlls/ole32/tests/compobj.c @@ -4296,7 +4296,6 @@ static void test_oletlsdata(void) hr = CoInitialize(NULL); ok(hr == S_OK, "Unexpected hr %#x.\n", hr); flags = get_oletlsflags(); -todo_wine ok(flags & OLETLS_APARTMENTTHREADED && !(flags & OLETLS_DISABLE_OLE1DDE), "Unexpected flags %#x.\n", flags); CoUninitialize(); flags = get_oletlsflags(); @@ -4305,7 +4304,6 @@ todo_wine hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE); ok(hr == S_OK, "Unexpected hr %#x.\n", hr); flags = get_oletlsflags(); -todo_wine ok(flags & OLETLS_APARTMENTTHREADED && flags & OLETLS_DISABLE_OLE1DDE, "Unexpected flags %#x.\n", flags); CoUninitialize(); flags = get_oletlsflags(); @@ -4315,7 +4313,6 @@ todo_wine hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); ok(hr == S_OK, "Unexpected hr %#x.\n", hr); flags = get_oletlsflags(); -todo_wine ok(flags & OLETLS_MULTITHREADED && flags & OLETLS_DISABLE_OLE1DDE, "Unexpected flags %#x.\n", flags); /* Implicit case. */
1
0
0
0
Nikolay Sivov : combase: Set a flag on thread id initialization.
by Alexandre Julliard
19 Nov '20
19 Nov '20
Module: wine Branch: master Commit: ffce592cc354b7ce962eb689d7ebb86eeb46dd50 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=ffce592cc354b7ce962eb689…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Thu Nov 19 13:40:31 2020 +0000 combase: Set a flag on thread id initialization. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/combase/combase.c | 3 ++ dlls/combase/combase_private.h | 15 ++++--- dlls/ole32/compobj_private.h | 36 ++++++++-------- dlls/ole32/tests/compobj.c | 96 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 127 insertions(+), 23 deletions(-) diff --git a/dlls/combase/combase.c b/dlls/combase/combase.c index 7a85b95a19b..72ff6cc31f9 100644 --- a/dlls/combase/combase.c +++ b/dlls/combase/combase.c @@ -2547,7 +2547,10 @@ HRESULT WINAPI CoGetCurrentLogicalThreadId(GUID *id) return hr; if (IsEqualGUID(&tlsdata->causality_id, &GUID_NULL)) + { CoCreateGuid(&tlsdata->causality_id); + tlsdata->flags |= OLETLS_UUIDINITIALIZED; + } *id = tlsdata->causality_id; diff --git a/dlls/combase/combase_private.h b/dlls/combase/combase_private.h index 55ce02d06f0..46a7c7f655d 100644 --- a/dlls/combase/combase_private.h +++ b/dlls/combase/combase_private.h @@ -63,17 +63,22 @@ HRESULT open_appidkey_from_clsid(REFCLSID clsid, REGSAM access, HKEY *subkey) DE #define CHARS_IN_GUID 39 +enum tlsdata_flags +{ + OLETLS_UUIDINITIALIZED = 0x2, +}; + /* this is what is stored in TEB->ReservedForOle */ struct tlsdata { struct apartment *apt; IErrorInfo *errorinfo; - DWORD thread_seqid;/* returned with CoGetCurrentProcess */ - DWORD apt_mask; /* apartment mask (+0Ch on x86) */ + DWORD thread_seqid; /* returned with CoGetCurrentProcess */ + DWORD flags; /* tlsdata_flags (+0Ch on x86) */ void *unknown0; - DWORD inits; /* number of times CoInitializeEx called */ - DWORD ole_inits; /* number of times OleInitialize called */ - GUID causality_id; /* unique identifier for each COM call */ + DWORD inits; /* number of times CoInitializeEx called */ + DWORD ole_inits; /* number of times OleInitialize called */ + GUID causality_id; /* unique identifier for each COM call */ LONG pending_call_count_client; /* number of client calls pending */ LONG pending_call_count_server; /* number of server calls pending */ DWORD unknown; diff --git a/dlls/ole32/compobj_private.h b/dlls/ole32/compobj_private.h index 4ec22d51f45..3c0e338127c 100644 --- a/dlls/ole32/compobj_private.h +++ b/dlls/ole32/compobj_private.h @@ -45,24 +45,24 @@ DEFINE_OLEGUID( CLSID_DfMarshal, 0x0000030b, 0, 0 ); struct oletls { struct apartment *apt; - IErrorInfo *errorinfo; /* see errorinfo.c */ - DWORD thread_seqid;/* returned with CoGetCurrentProcess */ - DWORD apt_mask; /* apartment mask (+0Ch on x86) */ - void *unknown0; - DWORD inits; /* number of times CoInitializeEx called */ - DWORD ole_inits; /* number of times OleInitialize called */ - GUID causality_id; /* unique identifier for each COM call */ - LONG pending_call_count_client; /* number of client calls pending */ - LONG pending_call_count_server; /* number of server calls pending */ - DWORD unknown; - IObjContext *context_token; /* (+38h on x86) */ - IUnknown *call_state; /* current call context (+3Ch on x86) */ - DWORD unknown2[46]; - IUnknown *cancel_object; /* cancel object set by CoSetCancelObject (+F8h on x86) */ - IUnknown *state; /* see CoSetState */ - struct list spies; /* Spies installed with CoRegisterInitializeSpy */ - DWORD spies_lock; - DWORD cancelcount; + IErrorInfo *errorinfo; /* see errorinfo.c */ + DWORD thread_seqid; /* returned with CoGetCurrentProcess */ + DWORD flags; /* tlsdata_flags (+0Ch on x86) */ + void *unknown0; + DWORD inits; /* number of times CoInitializeEx called */ + DWORD ole_inits; /* number of times OleInitialize called */ + GUID causality_id; /* unique identifier for each COM call */ + LONG pending_call_count_client; /* number of client calls pending */ + LONG pending_call_count_server; /* number of server calls pending */ + DWORD unknown; + IObjContext *context_token; /* (+38h on x86) */ + IUnknown *call_state; /* current call context (+3Ch on x86) */ + DWORD unknown2[46]; + IUnknown *cancel_object; /* cancel object set by CoSetCancelObject (+F8h on x86) */ + IUnknown *state; /* see CoSetState */ + struct list spies; /* Spies installed with CoRegisterInitializeSpy */ + DWORD spies_lock; + DWORD cancelcount; }; /* Global Interface Table Functions */ diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c index 0d7f3d8adee..c79e379f92a 100644 --- a/dlls/ole32/tests/compobj.c +++ b/dlls/ole32/tests/compobj.c @@ -36,6 +36,7 @@ #include "ctxtcall.h" #include "wine/test.h" +#include "winternl.h" #include "initguid.h" #define DEFINE_EXPECT(func) \ @@ -4245,6 +4246,100 @@ static void test_call_cancellation(void) ok(hr == CO_E_CANCEL_DISABLED, "Unexpected hr %#x.\n", hr); } +enum oletlsflags +{ + OLETLS_UUIDINITIALIZED = 0x2, + OLETLS_DISABLE_OLE1DDE = 0x40, + OLETLS_APARTMENTTHREADED = 0x80, + OLETLS_MULTITHREADED = 0x100, +}; + +struct oletlsdata +{ + void *threadbase; + void *smallocator; + DWORD id; + DWORD flags; +}; + +static DWORD get_oletlsflags(void) +{ + struct oletlsdata *data = NtCurrentTeb()->ReservedForOle; + return data ? data->flags : 0; +} + +static DWORD CALLBACK oletlsdata_test_thread(void *arg) +{ + IUnknown *unk; + DWORD flags; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_InternetZoneManager, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)&unk); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + IUnknown_Release(unk); + + /* Flag is not set for implicit MTA. */ + flags = get_oletlsflags(); + ok(!(flags & OLETLS_MULTITHREADED), "Unexpected flags %#x.\n", flags); + + return 0; +} + +static void test_oletlsdata(void) +{ + HANDLE thread; + DWORD flags; + HRESULT hr; + GUID guid; + + /* STA */ + hr = CoInitialize(NULL); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + flags = get_oletlsflags(); +todo_wine + ok(flags & OLETLS_APARTMENTTHREADED && !(flags & OLETLS_DISABLE_OLE1DDE), "Unexpected flags %#x.\n", flags); + CoUninitialize(); + flags = get_oletlsflags(); + ok(!(flags & (OLETLS_APARTMENTTHREADED | OLETLS_MULTITHREADED | OLETLS_DISABLE_OLE1DDE)), "Unexpected flags %#x.\n", flags); + + hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + flags = get_oletlsflags(); +todo_wine + ok(flags & OLETLS_APARTMENTTHREADED && flags & OLETLS_DISABLE_OLE1DDE, "Unexpected flags %#x.\n", flags); + CoUninitialize(); + flags = get_oletlsflags(); + ok(!(flags & (OLETLS_APARTMENTTHREADED | OLETLS_MULTITHREADED | OLETLS_DISABLE_OLE1DDE)), "Unexpected flags %#x.\n", flags); + + /* MTA */ + hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + flags = get_oletlsflags(); +todo_wine + ok(flags & OLETLS_MULTITHREADED && flags & OLETLS_DISABLE_OLE1DDE, "Unexpected flags %#x.\n", flags); + + /* Implicit case. */ + thread = CreateThread(NULL, 0, oletlsdata_test_thread, NULL, 0, &flags); + ok(thread != NULL, "Failed to create a test thread, error %d.\n", GetLastError()); + ok(!WaitForSingleObject(thread, 5000), "Wait timed out.\n"); + CloseHandle(thread); + + CoUninitialize(); + flags = get_oletlsflags(); + ok(!(flags & (OLETLS_APARTMENTTHREADED | OLETLS_MULTITHREADED | OLETLS_DISABLE_OLE1DDE)), "Unexpected flags %#x.\n", flags); + + /* Thread ID. */ + flags = get_oletlsflags(); + ok(!(flags & OLETLS_UUIDINITIALIZED), "Unexpected flags %#x.\n", flags); + + hr = CoGetCurrentLogicalThreadId(&guid); + ok(hr == S_OK, "Unexpected hr %#x.\n", hr); + + flags = get_oletlsflags(); + ok(flags & OLETLS_UUIDINITIALIZED && !(flags & (OLETLS_APARTMENTTHREADED | OLETLS_MULTITHREADED)), + "Unexpected flags %#x.\n", flags); +} + START_TEST(compobj) { init_funcs(); @@ -4254,6 +4349,7 @@ START_TEST(compobj) lstrcatA(testlib, "\\testlib.dll"); extract_resource("testlib.dll", "TESTDLL", testlib); + test_oletlsdata(); test_ProgIDFromCLSID(); test_CLSIDFromProgID(); test_CLSIDFromString();
1
0
0
0
Nikolay Sivov : mf/samplegrabber: Implement IMFRateSupport.
by Alexandre Julliard
19 Nov '20
19 Nov '20
Module: wine Branch: master Commit: 07139b0be29617bd1ba104a4c893c21185a9258c URL:
https://source.winehq.org/git/wine.git/?a=commit;h=07139b0be29617bd1ba104a4…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Thu Nov 19 15:21:40 2020 +0300 mf/samplegrabber: Implement IMFRateSupport. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mf/samplegrabber.c | 127 ++++++++++++++++++++++++++++++++++++++++++++++++ dlls/mf/tests/mf.c | 66 +++++++++++++++++++++++++ 2 files changed, 193 insertions(+) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=07139b0be29617bd1ba1…
1
0
0
0
Michael Stefaniuc : riched20: Use a wchar string literal for the array of neutral chars.
by Alexandre Julliard
19 Nov '20
19 Nov '20
Module: wine Branch: master Commit: 12821cbb75189401d09c0ef6076737f3c6eef59e URL:
https://source.winehq.org/git/wine.git/?a=commit;h=12821cbb75189401d09c0ef6…
Author: Michael Stefaniuc <mstefani(a)winehq.org> Date: Sun Nov 15 23:11:17 2020 +0100 riched20: Use a wchar string literal for the array of neutral chars. Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/riched20/editor.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c index d89735acc82..f0662682044 100644 --- a/dlls/riched20/editor.c +++ b/dlls/riched20/editor.c @@ -5310,13 +5310,13 @@ static int __cdecl wchar_comp( const void *key, const void *elem ) static BOOL isurlneutral( WCHAR c ) { /* NB this list is sorted */ - static const WCHAR neutral_chars[] = {'!','\"','\'','(',')',',','-','.',':',';','<','>','?','[',']','{','}'}; + static const WCHAR neutral_chars[] = L"!\"'(),-.:;<>?[]{}"; /* Some shortcuts */ if (isalnum( c )) return FALSE; - if (c > neutral_chars[ARRAY_SIZE( neutral_chars ) - 1]) return FALSE; + if (c > L'}') return FALSE; - return !!bsearch( &c, neutral_chars, ARRAY_SIZE( neutral_chars ), sizeof(c), wchar_comp ); + return !!bsearch( &c, neutral_chars, ARRAY_SIZE( neutral_chars ) - 1, sizeof(c), wchar_comp ); } /**
1
0
0
0
Michael Stefaniuc : riched20: Use zero terminated wchar strings.
by Alexandre Julliard
19 Nov '20
19 Nov '20
Module: wine Branch: master Commit: 80620171ecd6d948499aeda4c6ecf968534cd431 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=80620171ecd6d948499aeda4…
Author: Michael Stefaniuc <mstefani(a)winehq.org> Date: Sun Nov 15 23:11:16 2020 +0100 riched20: Use zero terminated wchar strings. Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/riched20/editor.c | 17 ++++++----------- dlls/riched20/writer.c | 4 +--- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c index ee392f6fa6a..d89735acc82 100644 --- a/dlls/riched20/editor.c +++ b/dlls/riched20/editor.c @@ -627,10 +627,9 @@ void ME_RTFParAttrHook(RTF_Info *info) else { ME_Cursor cursor; - WCHAR endl = '\r'; cursor = info->editor->pCursors[0]; if (cursor.nOffset || cursor.run->nCharOfs) - ME_InsertTextFromCursor(info->editor, 0, &endl, 1, info->style); + ME_InsertTextFromCursor(info->editor, 0, L"\r", 1, info->style); tableDef->row_start = table_insert_row_start( info->editor, info->editor->pCursors ); } @@ -1079,8 +1078,6 @@ void ME_RTFSpecialCharHook(RTF_Info *info) } else /* v1.0 - v3.0 */ { - WCHAR endl = '\r'; - para = info->editor->pCursors[0].para; para->fmt.dxOffset = info->tableDef->gapH; para->fmt.dxStartIndent = info->tableDef->leftEdge; @@ -1094,7 +1091,7 @@ void ME_RTFSpecialCharHook(RTF_Info *info) } para->fmt.cTabCount = min(tableDef->numCellsDefined, MAX_TAB_STOPS); if (!tableDef->numCellsDefined) para->fmt.wEffects &= ~PFE_TABLE; - ME_InsertTextFromCursor(info->editor, 0, &endl, 1, info->style); + ME_InsertTextFromCursor(info->editor, 0, L"\r", 1, info->style); tableDef->numCellsInserted = 0; } break; @@ -2488,8 +2485,6 @@ static BOOL handle_enter(ME_TextEditor *editor) if (editor->styleFlags & ES_MULTILINE) { - static const WCHAR endl = '\r'; - static const WCHAR endlv10[] = {'\r','\n'}; ME_Cursor cursor = editor->pCursors[0]; ME_Paragraph *para = cursor.para; int from, to; @@ -2530,7 +2525,7 @@ static BOOL handle_enter(ME_TextEditor *editor) editor->pCursors[0].para = para; editor->pCursors[0].run = para_first_run( para ); editor->pCursors[1] = editor->pCursors[0]; - ME_InsertTextFromCursor( editor, 0, &endl, 1, editor->pCursors[0].run->style ); + ME_InsertTextFromCursor( editor, 0, L"\r", 1, editor->pCursors[0].run->style ); para = editor_first_para( editor ); editor_set_default_para_fmt( editor, ¶->fmt ); para->nFlags = 0; @@ -2579,7 +2574,7 @@ static BOOL handle_enter(ME_TextEditor *editor) } editor->pCursors[0].nOffset = 0; editor->pCursors[1] = editor->pCursors[0]; - ME_InsertTextFromCursor( editor, 0, &endl, 1, editor->pCursors[0].run->style ); + ME_InsertTextFromCursor( editor, 0, L"\r", 1, editor->pCursors[0].run->style ); } else { @@ -2611,9 +2606,9 @@ static BOOL handle_enter(ME_TextEditor *editor) ME_InsertEndRowFromCursor(editor, 0); else if (!editor->bEmulateVersion10) - ME_InsertTextFromCursor(editor, 0, &endl, 1, eop_style); + ME_InsertTextFromCursor(editor, 0, L"\r", 1, eop_style); else - ME_InsertTextFromCursor(editor, 0, endlv10, 2, eop_style); + ME_InsertTextFromCursor(editor, 0, L"\r\n", 2, eop_style); ME_CommitCoalescingUndo(editor); SetCursor(NULL); diff --git a/dlls/riched20/writer.c b/dlls/riched20/writer.c index 49cbb0e021f..50eccfa714b 100644 --- a/dlls/riched20/writer.c +++ b/dlls/riched20/writer.c @@ -1139,11 +1139,9 @@ static BOOL ME_StreamOutText(ME_TextEditor *editor, ME_OutStream *pStream, if (!editor->bEmulateVersion10 && cursor.run->nFlags & MERF_ENDPARA) { - static const WCHAR szEOL[] = { '\r', '\n' }; - /* richedit 2.0 - all line breaks are \r\n */ if (dwFormat & SF_UNICODE) - success = ME_StreamOutMove(pStream, (const char *)szEOL, sizeof(szEOL)); + success = ME_StreamOutMove(pStream, (const char *)L"\r\n", 2 * sizeof(WCHAR)); else success = ME_StreamOutMove(pStream, "\r\n", 2); } else {
1
0
0
0
Michael Stefaniuc : riched20: Use wide-char string literals in a struct initialization.
by Alexandre Julliard
19 Nov '20
19 Nov '20
Module: wine Branch: master Commit: d08852d835702f8d61b598d4274e6e4bb5421120 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=d08852d835702f8d61b598d4…
Author: Michael Stefaniuc <mstefani(a)winehq.org> Date: Sun Nov 15 23:11:15 2020 +0100 riched20: Use wide-char string literals in a struct initialization. Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/riched20/editor.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c index 985bcc3d573..ee392f6fa6a 100644 --- a/dlls/riched20/editor.c +++ b/dlls/riched20/editor.c @@ -5433,23 +5433,25 @@ done: static BOOL ME_IsCandidateAnURL(ME_TextEditor *editor, const ME_Cursor *start, int nChars) { #define MAX_PREFIX_LEN 9 +#define X(str) str, ARRAY_SIZE(str) - 1 struct prefix_s { const WCHAR text[MAX_PREFIX_LEN]; int length; }prefixes[] = { - {{'p','r','o','s','p','e','r','o',':'}, 9}, - {{'t','e','l','n','e','t',':'}, 7}, - {{'g','o','p','h','e','r',':'}, 7}, - {{'m','a','i','l','t','o',':'}, 7}, - {{'h','t','t','p','s',':'}, 6}, - {{'f','i','l','e',':'}, 5}, - {{'n','e','w','s',':'}, 5}, - {{'w','a','i','s',':'}, 5}, - {{'n','n','t','p',':'}, 5}, - {{'h','t','t','p',':'}, 5}, - {{'w','w','w','.'}, 4}, - {{'f','t','p',':'}, 4}, + {X(L"prospero:")}, + {X(L"telnet:")}, + {X(L"gopher:")}, + {X(L"mailto:")}, + {X(L"https:")}, + {X(L"file:")}, + {X(L"news:")}, + {X(L"wais:")}, + {X(L"nntp:")}, + {X(L"http:")}, + {X(L"www.")}, + {X(L"ftp:")}, }; +#undef X WCHAR bufferW[MAX_PREFIX_LEN + 1]; unsigned int i;
1
0
0
0
Michael Stefaniuc : riched20: Use wide-char string literals.
by Alexandre Julliard
19 Nov '20
19 Nov '20
Module: wine Branch: master Commit: 60b216790193f1b6741676b55e63e71bcde8516c URL:
https://source.winehq.org/git/wine.git/?a=commit;h=60b216790193f1b6741676b5…
Author: Michael Stefaniuc <mstefani(a)winehq.org> Date: Sun Nov 15 23:11:14 2020 +0100 riched20: Use wide-char string literals. Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/riched20/editor.c | 18 ++++++------------ dlls/riched20/paint.c | 6 ++---- dlls/riched20/para.c | 15 +++++---------- dlls/riched20/richole.c | 3 +-- dlls/riched20/run.c | 3 +-- dlls/riched20/table.c | 6 ++---- 6 files changed, 17 insertions(+), 34 deletions(-) diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c index 2f7383e59a1..985bcc3d573 100644 --- a/dlls/riched20/editor.c +++ b/dlls/riched20/editor.c @@ -244,9 +244,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(richedit); static BOOL ME_RegisterEditorClass(HINSTANCE); static BOOL ME_UpdateLinkAttribute(ME_TextEditor *editor, ME_Cursor *start, int nChars); - -static const WCHAR REListBox20W[] = {'R','E','L','i','s','t','B','o','x','2','0','W', 0}; -static const WCHAR REComboBox20W[] = {'R','E','C','o','m','b','o','B','o','x','2','0','W', 0}; static HCURSOR hLeft; BOOL me_debug = FALSE; @@ -2222,8 +2219,6 @@ static DWORD CALLBACK ME_ReadFromHGLOBALRTF(DWORD_PTR dwCookie, LPBYTE lpBuff, L return 0; } -static const WCHAR rtfW[] = {'R','i','c','h',' ','T','e','x','t',' ','F','o','r','m','a','t',0}; - static HRESULT paste_rtf(ME_TextEditor *editor, FORMATETC *fmt, STGMEDIUM *med) { EDITSTREAM es; @@ -2278,7 +2273,7 @@ static struct paste_format const WCHAR *name; } paste_formats[] = { - {{ -1, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, paste_rtf, rtfW }, + {{ -1, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, paste_rtf, L"Rich Text Format" }, {{ CF_UNICODETEXT, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, paste_text }, {{ CF_ENHMETAFILE, NULL, DVASPECT_CONTENT, -1, TYMED_ENHMF }, paste_emf }, {{ 0 }} @@ -3273,9 +3268,9 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) UnregisterClassA(RICHEDIT_CLASS20A, 0); UnregisterClassA("RichEdit50A", 0); if (ME_ListBoxRegistered) - UnregisterClassW(REListBox20W, 0); + UnregisterClassW(L"REListBox20W", 0); if (ME_ComboBoxRegistered) - UnregisterClassW(REComboBox20W, 0); + UnregisterClassW(L"REComboBox20W", 0); LookupCleanup(); HeapDestroy (me_heap); release_typelib(); @@ -5149,7 +5144,6 @@ int ME_GetTextW(ME_TextEditor *editor, WCHAR *buffer, int buflen, { ME_Run *run, *next_run; const WCHAR *pStart = buffer; - const WCHAR cr_lf[] = {'\r', '\n', 0}; const WCHAR *str; int nLen; @@ -5172,7 +5166,7 @@ int ME_GetTextW(ME_TextEditor *editor, WCHAR *buffer, int buflen, * also uses this function. */ srcChars -= min(nLen, srcChars); nLen = 2; - str = cr_lf; + str = L"\r\n"; } else { @@ -5290,7 +5284,7 @@ LRESULT WINAPI REExtendedRegisterClass(void) { wcW.style = CS_PARENTDC | CS_DBLCLKS | CS_GLOBALCLASS; wcW.lpfnWndProc = REListWndProc; - wcW.lpszClassName = REListBox20W; + wcW.lpszClassName = L"REListBox20W"; if (RegisterClassW(&wcW)) ME_ListBoxRegistered = TRUE; } @@ -5298,7 +5292,7 @@ LRESULT WINAPI REExtendedRegisterClass(void) { wcW.style = CS_PARENTDC | CS_DBLCLKS | CS_GLOBALCLASS | CS_VREDRAW | CS_HREDRAW; wcW.lpfnWndProc = REComboWndProc; - wcW.lpszClassName = REComboBox20W; + wcW.lpszClassName = L"REComboBox20W"; if (RegisterClassW(&wcW)) ME_ComboBoxRegistered = TRUE; } diff --git a/dlls/riched20/paint.c b/dlls/riched20/paint.c index ffb50d5ceff..2db3a4ea2c1 100644 --- a/dlls/riched20/paint.c +++ b/dlls/riched20/paint.c @@ -972,10 +972,9 @@ static void draw_paragraph( ME_Context *c, ME_Paragraph *para ) } if (me_debug) { - static const WCHAR wszRowDebug[] = {'r','o','w','[','%','d',']',0}; WCHAR buf[128]; POINT pt = c->pt; - wsprintfW(buf, wszRowDebug, no); + wsprintfW( buf, L"row[%d]", no ); pt.y = 12+y; ME_DebugWrite(c->hDC, &pt, buf); } @@ -1006,12 +1005,11 @@ static void draw_paragraph( ME_Context *c, ME_Paragraph *para ) } if (me_debug) { - static const WCHAR wszRunDebug[] = {'[','%','d',':','%','x',']',' ','%','l','s',0}; WCHAR buf[2560]; POINT pt; pt.x = c->pt.x + run->pt.x; pt.y = c->pt.y + para->pt.y + run->pt.y; - wsprintfW(buf, wszRunDebug, no, p->member.run.nFlags, get_text( &p->member.run, 0 )); + wsprintfW( buf, L"[%d:%x] %ls", no, p->member.run.nFlags, get_text( &p->member.run, 0 )); ME_DebugWrite(c->hDC, &pt, buf); } break; diff --git a/dlls/riched20/para.c b/dlls/riched20/para.c index cb98218aeab..29624e6c1df 100644 --- a/dlls/riched20/para.c +++ b/dlls/riched20/para.c @@ -150,7 +150,6 @@ ME_Row *para_end_row( ME_Paragraph *para ) void ME_MakeFirstParagraph(ME_TextEditor *editor) { - static const WCHAR cr_lf[] = {'\r','\n',0}; ME_Context c; CHARFORMAT2W cf; const CHARFORMATW *host_cf; @@ -202,7 +201,7 @@ void ME_MakeFirstParagraph(ME_TextEditor *editor) } eol_len = editor->bEmulateVersion10 ? 2 : 1; - para->text = ME_MakeStringN( cr_lf, eol_len ); + para->text = ME_MakeStringN( L"\r\n", eol_len ); run = run_create( style, MERF_ENDPARA ); run->nCharOfs = 0; @@ -280,7 +279,6 @@ static ME_String *para_num_get_str( ME_Paragraph *para, WORD num ) /* max 4 Roman letters (representing '8') / decade + '(' + ')' */ ME_String *str = ME_MakeStringEmpty( 20 + 2 ); WCHAR *p; - static const WCHAR fmtW[] = {'%', 'd', 0}; static const WORD letter_base[] = { 1, 26, 26 * 26, 26 * 26 * 26 }; /* roman_base should start on a '5' not a '1', otherwise the 'total' code will need adjusting. 'N' and 'O' are what MS uses for 5000 and 10000, their version doesn't work well above 30000, @@ -309,7 +307,7 @@ static ME_String *para_num_get_str( ME_Paragraph *para, WORD num ) { case PFN_ARABIC: default: - p += swprintf( p, 20, fmtW, num ); + p += swprintf( p, 20, L"%d", num ); break; case PFN_LCLETTER: @@ -393,9 +391,6 @@ void para_num_init( ME_Context *c, ME_Paragraph *para ) { ME_Style *style; CHARFORMAT2W cf; - static const WCHAR bullet_font[] = {'S','y','m','b','o','l',0}; - static const WCHAR bullet_str[] = {0xb7, 0}; - static const WCHAR spaceW[] = {' ', 0}; SIZE sz; if (!para->fmt.wNumbering) return; @@ -409,7 +404,7 @@ void para_num_init( ME_Context *c, ME_Paragraph *para ) { cf.cbSize = sizeof(cf); cf.dwMask = CFM_FACE | CFM_CHARSET; - memcpy( cf.szFaceName, bullet_font, sizeof(bullet_font) ); + lstrcpyW( cf.szFaceName, L"Symbol" ); cf.bCharSet = SYMBOL_CHARSET; style = ME_ApplyStyle( c->editor, style, &cf ); } @@ -426,13 +421,13 @@ void para_num_init( ME_Context *c, ME_Paragraph *para ) if (para->fmt.wNumbering != PFN_BULLET) para->para_num.text = para_num_get_str( para, para_num_get_num( para ) ); else - para->para_num.text = ME_MakeStringConst( bullet_str, 1 ); + para->para_num.text = ME_MakeStringConst( L"\x00b7", 1 ); } select_style( c, para->para_num.style ); GetTextExtentPointW( c->hDC, para->para_num.text->szData, para->para_num.text->nLen, &sz ); para->para_num.width = sz.cx; - GetTextExtentPointW( c->hDC, spaceW, 1, &sz ); + GetTextExtentPointW( c->hDC, L" ", 1, &sz ); para->para_num.width += sz.cx; } diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c index 5d73731dedb..bedeefe9a63 100644 --- a/dlls/riched20/richole.c +++ b/dlls/riched20/richole.c @@ -3004,9 +3004,8 @@ static void textfont_reset_to_default(ITextFontImpl *font) font->props[id].l = GetSystemDefaultLCID(); break; case FONT_NAME: { - static const WCHAR sysW[] = {'S','y','s','t','e','m',0}; SysFreeString(font->props[id].str); - font->props[id].str = SysAllocString(sysW); + font->props[id].str = SysAllocString(L"System"); break; } case FONT_WEIGHT: diff --git a/dlls/riched20/run.c b/dlls/riched20/run.c index fdda43ba51a..e099c0be6dc 100644 --- a/dlls/riched20/run.c +++ b/dlls/riched20/run.c @@ -665,7 +665,6 @@ int ME_PointFromChar(ME_TextEditor *editor, ME_Run *pRun, int nOffset, BOOL visu SIZE ME_GetRunSizeCommon(ME_Context *c, const ME_Paragraph *para, ME_Run *run, int nLen, int startx, int *pAscent, int *pDescent) { - static const WCHAR spaceW[] = {' ',0}; SIZE size; nLen = min( nLen, run->len ); @@ -673,7 +672,7 @@ SIZE ME_GetRunSizeCommon(ME_Context *c, const ME_Paragraph *para, ME_Run *run, i if (run->nFlags & MERF_ENDPARA) { nLen = min( nLen, 1 ); - ME_GetTextExtent(c, spaceW, nLen, run->style, &size); + ME_GetTextExtent( c, L" ", nLen, run->style, &size ); } else if (para->nFlags & MEPF_COMPLEX) { diff --git a/dlls/riched20/table.c b/dlls/riched20/table.c index 0ce5a2c32c0..c3823e3b493 100644 --- a/dlls/riched20/table.c +++ b/dlls/riched20/table.c @@ -54,8 +54,6 @@ #include "editor.h" #include "rtf.h" -static const WCHAR cr_lf[] = {'\r', '\n', 0}; - static ME_Paragraph* table_insert_end_para( ME_TextEditor *editor, ME_Cursor *cursor, const WCHAR *eol_str, int eol_len, int para_flags ) { @@ -75,7 +73,7 @@ ME_Paragraph* table_insert_row_start( ME_TextEditor *editor, ME_Cursor *cursor ) { ME_Paragraph *para; - para = table_insert_end_para( editor, cursor, cr_lf, 2, MEPF_ROWSTART ); + para = table_insert_end_para( editor, cursor, L"\r\n", 2, MEPF_ROWSTART ); return para_prev( para ); } @@ -122,7 +120,7 @@ ME_Paragraph* table_insert_row_end( ME_TextEditor *editor, ME_Cursor *cursor ) { ME_Paragraph *para; - para = table_insert_end_para( editor, cursor, cr_lf, 2, MEPF_ROWEND ); + para = table_insert_end_para( editor, cursor, L"\r\n", 2, MEPF_ROWEND ); return para_prev( para ); }
1
0
0
0
Alexandre Julliard : msvcrt: Build with msvcrt headers.
by Alexandre Julliard
19 Nov '20
19 Nov '20
Module: wine Branch: master Commit: 191bdeaff3676f192148e17c6369865ec94c2ba2 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=191bdeaff3676f192148e17c…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Nov 19 13:28:52 2020 +0100 msvcrt: Build with msvcrt headers. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/crtdll/Makefile.in | 6 ++++-- dlls/crtdll/crtdll.spec | 22 +++++++++++----------- dlls/msvcr100/Makefile.in | 4 +++- dlls/msvcr100/msvcr100.spec | 22 +++++++++++----------- dlls/msvcr110/Makefile.in | 4 +++- dlls/msvcr110/msvcr110.spec | 22 +++++++++++----------- dlls/msvcr120/Makefile.in | 4 +++- dlls/msvcr120/msvcr120.spec | 22 +++++++++++----------- dlls/msvcr70/Makefile.in | 4 +++- dlls/msvcr70/msvcr70.spec | 22 +++++++++++----------- dlls/msvcr71/Makefile.in | 4 +++- dlls/msvcr71/msvcr71.spec | 22 +++++++++++----------- dlls/msvcr80/Makefile.in | 4 +++- dlls/msvcr80/msvcr80.spec | 22 +++++++++++----------- dlls/msvcr90/Makefile.in | 4 +++- dlls/msvcr90/msvcr90.spec | 22 +++++++++++----------- dlls/msvcrt/Makefile.in | 4 +++- dlls/msvcrt/cpp.c | 5 +---- dlls/msvcrt/crt_main.c | 4 ---- dlls/msvcrt/crt_wmain.c | 4 ---- dlls/msvcrt/data.c | 3 --- dlls/msvcrt/dir.c | 3 --- dlls/msvcrt/except.c | 3 --- dlls/msvcrt/except_arm.c | 3 --- dlls/msvcrt/except_arm64.c | 3 --- dlls/msvcrt/except_i386.c | 3 --- dlls/msvcrt/except_x86_64.c | 3 --- dlls/msvcrt/exit.c | 2 +- dlls/msvcrt/file.c | 5 ----- dlls/msvcrt/heap.c | 1 - dlls/msvcrt/locale.c | 4 +--- dlls/msvcrt/lock.c | 3 --- dlls/msvcrt/math.c | 9 +-------- dlls/msvcrt/mbcs.c | 2 +- dlls/msvcrt/misc.c | 4 +--- dlls/msvcrt/msvcrt.h | 1 - dlls/msvcrt/msvcrt.spec | 24 ++++++++++++------------ dlls/msvcrt/onexit.c | 1 - dlls/msvcrt/process.c | 1 - dlls/msvcrt/scheduler.c | 2 -- dlls/msvcrt/string.c | 28 ++++++++++++---------------- dlls/msvcrt/time.c | 2 -- dlls/msvcrt/undname.c | 3 --- dlls/msvcrt/wcs.c | 27 +++++++++++++-------------- dlls/msvcrtd/Makefile.in | 4 +++- dlls/msvcrtd/msvcrtd.spec | 22 +++++++++++----------- dlls/ucrtbase/Makefile.in | 4 +++- dlls/ucrtbase/ucrtbase.spec | 26 +++++++++++++------------- 48 files changed, 189 insertions(+), 234 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=191bdeaff3676f192148…
1
0
0
0
Alexandre Julliard : makefiles: Allow modules to link to their own import library.
by Alexandre Julliard
19 Nov '20
19 Nov '20
Module: wine Branch: master Commit: be8a81b54c7adf1e77d9411d337b9227e0eb119f URL:
https://source.winehq.org/git/wine.git/?a=commit;h=be8a81b54c7adf1e77d9411d…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Nov 19 11:40:26 2020 +0100 makefiles: Allow modules to link to their own import library. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- tools/makedep.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/makedep.c b/tools/makedep.c index f179f3afa5e..c30c21ff27d 100644 --- a/tools/makedep.c +++ b/tools/makedep.c @@ -2218,9 +2218,6 @@ static struct strarray add_import_libs( const struct makefile *make, struct stra const char *name = get_base_name( imports.str[i] ); const char *lib = NULL; - /* skip module's own importlib, its object files will be linked directly */ - if (make->importlib && !strcmp( make->importlib, imports.str[i] )) continue; - for (j = 0; j < subdirs.count; j++) { if (submakes[j]->importlib && !strcmp( submakes[j]->importlib, name )) @@ -3117,7 +3114,7 @@ static void output_source_default( struct makefile *make, struct incl_file *sour { if ((source->file->flags & FLAG_C_UNIX) && *dll_ext) strarray_add( &make->unixobj_files, strmake( "%s.o", obj )); - else if (!is_dll_src && (!(source->file->flags & FLAG_C_IMPLIB) || (make->importlib && strarray_exists( &make->imports, make->importlib )))) + else if (!is_dll_src && !(source->file->flags & FLAG_C_IMPLIB)) strarray_add( &make->object_files, strmake( "%s.o", obj )); else strarray_add( &make->clean_files, strmake( "%s.o", obj )); @@ -3136,7 +3133,10 @@ static void output_source_default( struct makefile *make, struct incl_file *sour } if (need_cross) { - strarray_add( is_dll_src ? &make->clean_files : &make->crossobj_files, strmake( "%s.cross.o", obj )); + if (!is_dll_src && !(source->file->flags & FLAG_C_IMPLIB)) + strarray_add( &make->crossobj_files, strmake( "%s.cross.o", obj )); + else + strarray_add( &make->clean_files, strmake( "%s.cross.o", obj )); output( "%s.cross.o: %s\n", obj_dir_path( make, obj ), source->filename ); output( "\t$(CROSSCC) -c -o $@ %s", source->filename ); output_filenames( defines );
1
0
0
0
Alexandre Julliard : makefiles: Don't add a default crt lib for msvcrt dlls.
by Alexandre Julliard
19 Nov '20
19 Nov '20
Module: wine Branch: master Commit: 27b20c1db55f896c2901332ffb5d99f89dcd371c URL:
https://source.winehq.org/git/wine.git/?a=commit;h=27b20c1db55f896c2901332f…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Thu Nov 19 11:35:22 2020 +0100 makefiles: Don't add a default crt lib for msvcrt dlls. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- tools/makedep.c | 42 ++++++++++++++++++++++++------------------ tools/winegcc/winegcc.c | 8 +++++++- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/tools/makedep.c b/tools/makedep.c index 8812be4e40c..f179f3afa5e 100644 --- a/tools/makedep.c +++ b/tools/makedep.c @@ -2276,7 +2276,7 @@ static struct strarray get_default_imports( const struct makefile *make ) /******************************************************************* * add_crt_import */ -static const char *add_crt_import( const struct makefile *make, struct strarray *imports ) +static void add_crt_import( const struct makefile *make, struct strarray *imports, struct strarray *defs ) { unsigned int i; const char *crt_dll = NULL; @@ -2289,10 +2289,28 @@ static const char *add_crt_import( const struct makefile *make, struct strarray } if (!crt_dll && !strarray_exists( &make->extradllflags, "-nodefaultlibs" )) { - crt_dll = !make->testdll && !make->staticlib ? "ucrtbase" : "msvcrt"; - strarray_add( imports, crt_dll ); + if (make->module && + (!strncmp( make->module, "msvcr", 5 ) || + !strncmp( make->module, "ucrt", 4 ) || + !strcmp( make->module, "crtdll.dll" ))) + { + crt_dll = make->module; + } + else + { + crt_dll = !make->testdll && !make->staticlib ? "ucrtbase" : "msvcrt"; + strarray_add( imports, crt_dll ); + } + } + + if (!defs) return; + if (crt_dll && !strncmp( crt_dll, "ucrt", 4 )) strarray_add( defs, "-D_UCRT" ); + else + { + unsigned int version = 0; + if (crt_dll) sscanf( crt_dll, "msvcr%u", &version ); + strarray_add( defs, strmake( "-D_MSVCR_VER=%u", version )); } - return crt_dll; } @@ -3034,7 +3052,7 @@ static void output_source_spec( struct makefile *make, struct incl_file *source, const char *debug_file; if (!imports.count) imports = make->imports; - else if (make->use_msvcrt) add_crt_import( make, &imports ); + else if (make->use_msvcrt) add_crt_import( make, &imports, NULL ); if (!dll_flags.count) dll_flags = make->extradllflags; all_libs = add_import_libs( make, &dep_libs, imports, 0, 0 ); @@ -4200,19 +4218,7 @@ static void load_sources( struct makefile *make ) make->use_msvcrt = 1; } - if (make->use_msvcrt) - { - const char *crt_dll = add_crt_import( make, &make->imports ); - - if (crt_dll && !strncmp( crt_dll, "ucrt", 4 )) strarray_add( &make->define_args, "-D_UCRT" ); - else - { - unsigned int msvcrt_version = 0; - - if (crt_dll) sscanf( crt_dll, "msvcr%u", &msvcrt_version ); - strarray_add( &make->define_args, strmake( "-D_MSVCR_VER=%u", msvcrt_version )); - } - } + if (make->use_msvcrt) add_crt_import( make, &make->imports, &make->define_args ); LIST_FOR_EACH_ENTRY( file, &make->includes, struct incl_file, entry ) parse_file( make, file, 0 ); LIST_FOR_EACH_ENTRY( file, &make->sources, struct incl_file, entry ) get_dependencies( file, file ); diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c index ca45f9bdad0..9268a5dfd1d 100644 --- a/tools/winegcc/winegcc.c +++ b/tools/winegcc/winegcc.c @@ -1224,7 +1224,13 @@ static void build(struct options* opts) add_library(opts, lib_dirs, files, "winecrt0"); if (opts->use_msvcrt) { - if (!crt_lib) add_library(opts, lib_dirs, files, "ucrtbase"); + if (!crt_lib) + { + if (strncmp( output_name, "msvcr", 5 ) && + strncmp( output_name, "ucrt", 4 ) && + strcmp( output_name, "crtdll.dll" )) + add_library(opts, lib_dirs, files, "ucrtbase"); + } else strarray_add(files, strmake("-a%s", crt_lib)); } if (opts->win16_app) add_library(opts, lib_dirs, files, "kernel");
1
0
0
0
← Newer
1
...
30
31
32
33
34
35
36
...
86
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
74
75
76
77
78
79
80
81
82
83
84
85
86
Results per page:
10
25
50
100
200