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
March 2016
----- 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
Nikolay Sivov : msctf/tests: Fix a crash on unsupported interface.
by Alexandre Julliard
22 Mar '16
22 Mar '16
Module: wine Branch: master Commit: 6834367a167b30e0180b58df6461e28701a9df0c URL:
http://source.winehq.org/git/wine.git/?a=commit;h=6834367a167b30e0180b58df6…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Mar 22 10:55:03 2016 +0300 msctf/tests: Fix a crash on unsupported interface. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Aric Stewart <aric(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msctf/tests/inputprocessor.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/dlls/msctf/tests/inputprocessor.c b/dlls/msctf/tests/inputprocessor.c index 080d7f0..8c9c884 100644 --- a/dlls/msctf/tests/inputprocessor.c +++ b/dlls/msctf/tests/inputprocessor.c @@ -1427,13 +1427,16 @@ static void test_startSession(void) ok(cid == cid2, "Second activate client ID does not match\n"); hr = ITfThreadMgr_QueryInterface(g_tm, &IID_ITfThreadMgrEx, (void **)&tmex); - ok(SUCCEEDED(hr), "Unable to acquire ITfThreadMgrEx interface\n"); - - hr = ITfThreadMgrEx_ActivateEx(tmex, &cid2, 0); - ok(SUCCEEDED(hr), "Failed to Activate\n"); - ok(cid == cid2, "ActivateEx client ID does not match\n"); + if (hr == S_OK) + { + hr = ITfThreadMgrEx_ActivateEx(tmex, &cid2, 0); + ok(SUCCEEDED(hr), "Failed to Activate\n"); + ok(cid == cid2, "ActivateEx client ID does not match\n"); - ITfThreadMgrEx_Release(tmex); + ITfThreadMgrEx_Release(tmex); + } + else + win_skip("ITfThreadMgrEx is not supported\n"); hr = ITfThreadMgr_Deactivate(g_tm); ok(SUCCEEDED(hr), "Failed to Deactivate\n");
1
0
0
0
Nikolay Sivov : ole32: Fix CreataDataCache() return value when requested riid is not IUnknown, for aggregation case.
by Alexandre Julliard
22 Mar '16
22 Mar '16
Module: wine Branch: master Commit: fde61d467abd7c8357c25d17b39b2a5e8e9b871c URL:
http://source.winehq.org/git/wine.git/?a=commit;h=fde61d467abd7c8357c25d17b…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Mon Mar 21 11:55:57 2016 +0300 ole32: Fix CreataDataCache() return value when requested riid is not IUnknown, for aggregation case. 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/ole32/datacache.c | 2 +- dlls/ole32/tests/ole2.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/dlls/ole32/datacache.c b/dlls/ole32/datacache.c index e93e867..21f63d3 100644 --- a/dlls/ole32/datacache.c +++ b/dlls/ole32/datacache.c @@ -2464,7 +2464,7 @@ HRESULT WINAPI CreateDataCache( * IUnknown pointer can be returned to the outside. */ if ( pUnkOuter && !IsEqualIID(&IID_IUnknown, riid) ) - return CLASS_E_NOAGGREGATION; + return E_INVALIDARG; /* * Try to construct a new instance of the class. diff --git a/dlls/ole32/tests/ole2.c b/dlls/ole32/tests/ole2.c index d58105c..afff6ba 100644 --- a/dlls/ole32/tests/ole2.c +++ b/dlls/ole32/tests/ole2.c @@ -1598,7 +1598,6 @@ static void test_data_cache(void) /* requested is not IUnknown */ hr = CreateDataCache(&unknown, &CLSID_NULL, &IID_IOleCache2, (void**)&pOleCache); -todo_wine ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); hr = CreateDataCache(&unknown, &CLSID_NULL, &IID_IUnknown, (void**)&unk);
1
0
0
0
Nikolay Sivov : ole32: Make CoGetInstanceFromFile() propagate failure codes to returned MULTI_QI data (Coverity).
by Alexandre Julliard
22 Mar '16
22 Mar '16
Module: wine Branch: master Commit: 7863247ec682522cde5677e4eaf6bd04d626a3a4 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=7863247ec682522cde5677e4e…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Mar 20 21:07:40 2016 +0300 ole32: Make CoGetInstanceFromFile() propagate failure codes to returned MULTI_QI data (Coverity). 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/ole32/compobj.c | 34 +++--- dlls/ole32/tests/compobj.c | 252 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 273 insertions(+), 13 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=7863247ec682522cde567…
1
0
0
0
Nikolay Sivov : xmllite/tests: Add a helper to create/set writer output.
by Alexandre Julliard
22 Mar '16
22 Mar '16
Module: wine Branch: master Commit: 450a343f77ec863cf1e443eb0e910019aa5f1596 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=450a343f77ec863cf1e443eb0…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Mar 22 10:10:39 2016 +0300 xmllite/tests: Add a helper to create/set writer output. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/xmllite/tests/writer.c | 80 ++++++++++++++------------------------------- 1 file changed, 25 insertions(+), 55 deletions(-) diff --git a/dlls/xmllite/tests/writer.c b/dlls/xmllite/tests/writer.c index aaf0108..4071d61 100644 --- a/dlls/xmllite/tests/writer.c +++ b/dlls/xmllite/tests/writer.c @@ -54,6 +54,20 @@ static void check_output(IStream *stream, const char *expected, int line) } #define CHECK_OUTPUT(stream, expected) check_output(stream, expected, __LINE__) +static IStream *writer_set_output(IXmlWriter *writer) +{ + IStream *stream; + HRESULT hr; + + hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = IXmlWriter_SetOutput(writer, (IUnknown*)stream); + ok(hr == S_OK, "got 0x%08x\n", hr); + + return stream; +} + static HRESULT WINAPI testoutput_QueryInterface(IUnknown *iface, REFIID riid, void **obj) { if (IsEqualGUID(riid, &IID_IUnknown)) { @@ -230,11 +244,7 @@ static void test_writestartdocument(void) hr = IXmlWriter_Flush(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); - - hr = IXmlWriter_SetOutput(writer, (IUnknown*)stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + stream = writer_set_output(writer); /* nothing written yet */ hr = IXmlWriter_Flush(writer); @@ -254,11 +264,7 @@ static void test_writestartdocument(void) IStream_Release(stream); /* now add PI manually, and try to start a document */ - hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); - - hr = IXmlWriter_SetOutput(writer, (IUnknown*)stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + stream = writer_set_output(writer); hr = IXmlWriter_WriteProcessingInstruction(writer, xmlW, versionW); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -326,11 +332,7 @@ static void test_omitxmldeclaration(void) hr = CreateXmlWriter(&IID_IXmlWriter, (void**)&writer, NULL); ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); - - hr = IXmlWriter_SetOutput(writer, (IUnknown*)stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + stream = writer_set_output(writer); hr = IXmlWriter_SetProperty(writer, XmlWriterProperty_OmitXmlDeclaration, TRUE); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -355,11 +357,7 @@ static void test_omitxmldeclaration(void) IStream_Release(stream); /* now add PI manually, and try to start a document */ - hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); - - hr = IXmlWriter_SetOutput(writer, (IUnknown*)stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + stream = writer_set_output(writer); hr = IXmlWriter_WriteProcessingInstruction(writer, xmlW, versionW); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -532,17 +530,13 @@ static void test_writestartelement(void) IStream *stream; HRESULT hr; - hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); - hr = CreateXmlWriter(&IID_IXmlWriter, (void**)&writer, NULL); ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); hr = IXmlWriter_WriteStartElement(writer, NULL, aW, NULL); ok(hr == E_UNEXPECTED, "got 0x%08x\n", hr); - hr = IXmlWriter_SetOutput(writer, (IUnknown*)stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + stream = writer_set_output(writer); hr = IXmlWriter_WriteStartElement(writer, aW, NULL, NULL); ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); @@ -580,14 +574,10 @@ static void test_writestartelement(void) hr = CreateXmlWriter(&IID_IXmlWriter, (void**)&writer, NULL); ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); - hr = IXmlWriter_WriteElementString(writer, NULL, bW, NULL, valueW); ok(hr == E_UNEXPECTED, "got 0x%08x\n", hr); - hr = IXmlWriter_SetOutput(writer, (IUnknown*)stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + stream = writer_set_output(writer); hr = IXmlWriter_WriteStartElement(writer, NULL, aW, NULL); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -612,14 +602,10 @@ static void test_writeendelement(void) IStream *stream; HRESULT hr; - hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); - hr = CreateXmlWriter(&IID_IXmlWriter, (void**)&writer, NULL); ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); - hr = IXmlWriter_SetOutput(writer, (IUnknown*)stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + stream = writer_set_output(writer); hr = IXmlWriter_WriteStartElement(writer, NULL, aW, NULL); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -652,17 +638,13 @@ static void test_writeenddocument(void) HRESULT hr; char *ptr; - hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); - hr = CreateXmlWriter(&IID_IXmlWriter, (void**)&writer, NULL); ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); hr = IXmlWriter_WriteEndDocument(writer); ok(hr == E_UNEXPECTED, "got 0x%08x\n", hr); - hr = IXmlWriter_SetOutput(writer, (IUnknown*)stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + stream = writer_set_output(writer); /* WriteEndDocument resets it to initial state */ hr = IXmlWriter_WriteEndDocument(writer); @@ -714,9 +696,6 @@ static void test_WriteComment(void) IStream *stream; HRESULT hr; - hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); - hr = CreateXmlWriter(&IID_IXmlWriter, (void**)&writer, NULL); ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); @@ -726,8 +705,7 @@ static void test_WriteComment(void) hr = IXmlWriter_WriteComment(writer, aW); ok(hr == E_UNEXPECTED, "got 0x%08x\n", hr); - hr = IXmlWriter_SetOutput(writer, (IUnknown*)stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + stream = writer_set_output(writer); hr = IXmlWriter_WriteStartDocument(writer, XmlStandalone_Omit); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -766,9 +744,6 @@ static void test_WriteCData(void) IStream *stream; HRESULT hr; - hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); - hr = CreateXmlWriter(&IID_IXmlWriter, (void**)&writer, NULL); ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); @@ -778,8 +753,7 @@ static void test_WriteCData(void) hr = IXmlWriter_WriteCData(writer, aW); ok(hr == E_UNEXPECTED, "got 0x%08x\n", hr); - hr = IXmlWriter_SetOutput(writer, (IUnknown*)stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + stream = writer_set_output(writer); hr = IXmlWriter_WriteStartElement(writer, NULL, bW, NULL); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -819,9 +793,6 @@ static void test_WriteRaw(void) IStream *stream; HRESULT hr; - hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); - ok(hr == S_OK, "got 0x%08x\n", hr); - hr = CreateXmlWriter(&IID_IXmlWriter, (void**)&writer, NULL); ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); @@ -831,8 +802,7 @@ static void test_WriteRaw(void) hr = IXmlWriter_WriteRaw(writer, rawW); ok(hr == E_UNEXPECTED, "got 0x%08x\n", hr); - hr = IXmlWriter_SetOutput(writer, (IUnknown*)stream); - ok(hr == S_OK, "got 0x%08x\n", hr); + stream = writer_set_output(writer); hr = IXmlWriter_WriteRaw(writer, NULL); ok(hr == S_OK, "got 0x%08x\n", hr);
1
0
0
0
Nikolay Sivov : xmllite/tests: Add a helper to test writer output.
by Alexandre Julliard
22 Mar '16
22 Mar '16
Module: wine Branch: master Commit: 1a681934543f4fff692cde243c4303b4ad65a840 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1a681934543f4fff692cde243…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Mar 22 10:10:38 2016 +0300 xmllite/tests: Add a helper to test writer output. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/xmllite/tests/writer.c | 122 +++++++++++++------------------------------- 1 file changed, 36 insertions(+), 86 deletions(-) diff --git a/dlls/xmllite/tests/writer.c b/dlls/xmllite/tests/writer.c index 080d38f..aaf0108 100644 --- a/dlls/xmllite/tests/writer.c +++ b/dlls/xmllite/tests/writer.c @@ -31,6 +31,29 @@ #include "initguid.h" DEFINE_GUID(IID_IXmlWriterOutput, 0xc1131708, 0x0f59, 0x477f, 0x93, 0x59, 0x7d, 0x33, 0x24, 0x51, 0xbc, 0x1a); +static void check_output(IStream *stream, const char *expected, int line) +{ + HGLOBAL hglobal; + int len = strlen(expected), size; + char *ptr; + HRESULT hr; + + hr = GetHGlobalFromStream(stream, &hglobal); + ok_(__FILE__, line)(hr == S_OK, "got 0x%08x\n", hr); + + size = GlobalSize(hglobal); + ptr = GlobalLock(hglobal); + if (size != len) + { + ok_(__FILE__, line)(0, "data size mismatch, expected %u, got %u\n", len, size); + ok_(__FILE__, line)(0, "got %s, expected %s\n", ptr, expected); + } + else + ok_(__FILE__, line)(!strncmp(ptr, expected, len), "got %s, expected %s\n", ptr, expected); + GlobalUnlock(hglobal); +} +#define CHECK_OUTPUT(stream, expected) check_output(stream, expected, __LINE__) + static HRESULT WINAPI testoutput_QueryInterface(IUnknown *iface, REFIID riid, void **obj) { if (IsEqualGUID(riid, &IID_IUnknown)) { @@ -191,10 +214,8 @@ static void test_writestartdocument(void) static const WCHAR versionW[] = {'v','e','r','s','i','o','n','=','"','1','.','0','"',0}; static const WCHAR xmlW[] = {'x','m','l',0}; IXmlWriter *writer; - HGLOBAL hglobal; IStream *stream; HRESULT hr; - char *ptr; hr = CreateXmlWriter(&IID_IXmlWriter, (void**)&writer, NULL); ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); @@ -225,12 +246,7 @@ static void test_writestartdocument(void) hr = IXmlWriter_Flush(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - hr = GetHGlobalFromStream(stream, &hglobal); - ok(hr == S_OK, "got 0x%08x\n", hr); - - ptr = GlobalLock(hglobal); - ok(!strncmp(ptr, fullprolog, strlen(fullprolog)), "got %s, expected %s\n", ptr, fullprolog); - GlobalUnlock(hglobal); + CHECK_OUTPUT(stream, fullprolog); /* one more time */ hr = IXmlWriter_WriteStartDocument(writer, XmlStandalone_Yes); @@ -260,12 +276,7 @@ static void test_writestartdocument(void) hr = IXmlWriter_Flush(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - hr = GetHGlobalFromStream(stream, &hglobal); - ok(hr == S_OK, "got 0x%08x\n", hr); - - ptr = GlobalLock(hglobal); - ok(!strncmp(ptr, prologversion, strlen(prologversion)), "got %s\n", ptr); - GlobalUnlock(hglobal); + CHECK_OUTPUT(stream, prologversion); IStream_Release(stream); IXmlWriter_Release(writer); @@ -356,12 +367,7 @@ static void test_omitxmldeclaration(void) hr = IXmlWriter_Flush(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - hr = GetHGlobalFromStream(stream, &hglobal); - ok(hr == S_OK, "got 0x%08x\n", hr); - - ptr = GlobalLock(hglobal); - ok(!strncmp(ptr, prologversion, strlen(prologversion)), "got %s\n", ptr); - GlobalUnlock(hglobal); + CHECK_OUTPUT(stream, prologversion); hr = IXmlWriter_WriteStartDocument(writer, XmlStandalone_Yes); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -369,9 +375,7 @@ static void test_omitxmldeclaration(void) hr = IXmlWriter_Flush(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - ptr = GlobalLock(hglobal); - ok(!strncmp(ptr, prologversion, strlen(prologversion)), "got %s\n", ptr); - GlobalUnlock(hglobal); + CHECK_OUTPUT(stream, prologversion); hr = IXmlWriter_WriteStartDocument(writer, XmlStandalone_Yes); ok(hr == WR_E_INVALIDACTION, "got 0x%08x\n", hr); @@ -379,9 +383,7 @@ static void test_omitxmldeclaration(void) hr = IXmlWriter_Flush(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - ptr = GlobalLock(hglobal); - ok(!strncmp(ptr, prologversion, strlen(prologversion)), "got %s\n", ptr); - GlobalUnlock(hglobal); + CHECK_OUTPUT(stream, prologversion); /* another attempt to add 'xml' PI */ hr = IXmlWriter_WriteProcessingInstruction(writer, xmlW, versionW); @@ -526,10 +528,8 @@ static void test_writestartelement(void) static const char *str = "<a><b>value</b>"; static const WCHAR aW[] = {'a',0}; static const WCHAR bW[] = {'b',0}; - char *ptr; IXmlWriter *writer; IStream *stream; - HGLOBAL hglobal; HRESULT hr; hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); @@ -556,18 +556,13 @@ static void test_writestartelement(void) hr = IXmlWriter_WriteStartElement(writer, NULL, aW, NULL); ok(hr == S_OK, "got 0x%08x\n", hr); - hr = GetHGlobalFromStream(stream, &hglobal); - ok(hr == S_OK, "got 0x%08x\n", hr); - hr = IXmlWriter_WriteStartDocument(writer, XmlStandalone_Yes); ok(hr == WR_E_INVALIDACTION, "got 0x%08x\n", hr); hr = IXmlWriter_Flush(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - ptr = GlobalLock(hglobal); - ok(!strncmp(ptr, "<a", 2), "got %s\n", ptr); - GlobalUnlock(hglobal); + CHECK_OUTPUT(stream, "<a"); hr = IXmlWriter_WriteStartDocument(writer, XmlStandalone_Yes); ok(hr == WR_E_INVALIDACTION, "got 0x%08x\n", hr); @@ -603,12 +598,7 @@ static void test_writestartelement(void) hr = IXmlWriter_Flush(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - hr = GetHGlobalFromStream(stream, &hglobal); - ok(hr == S_OK, "got 0x%08x\n", hr); - - ptr = GlobalLock(hglobal); - ok(!strncmp(ptr, str, strlen(str)), "got %s\n", ptr); - GlobalUnlock(hglobal); + CHECK_OUTPUT(stream, str); IStream_Release(stream); IXmlWriter_Release(writer); @@ -618,10 +608,8 @@ static void test_writeendelement(void) { static const WCHAR aW[] = {'a',0}; static const WCHAR bW[] = {'b',0}; - char *ptr; IXmlWriter *writer; IStream *stream; - HGLOBAL hglobal; HRESULT hr; hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); @@ -645,15 +633,10 @@ static void test_writeendelement(void) hr = IXmlWriter_WriteEndElement(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - hr = GetHGlobalFromStream(stream, &hglobal); - ok(hr == S_OK, "got 0x%08x\n", hr); - hr = IXmlWriter_Flush(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - ptr = GlobalLock(hglobal); - ok(!strncmp(ptr, "<a><b /></a>", 12), "got %s\n", ptr); - GlobalUnlock(hglobal); + CHECK_OUTPUT(stream, "<a><b /></a>"); IXmlWriter_Release(writer); IStream_Release(stream); @@ -716,10 +699,7 @@ static void test_writeenddocument(void) hr = IXmlWriter_Flush(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - ptr = GlobalLock(hglobal); - ok(ptr != NULL, "got %p\n", ptr); - ok(!strncmp(ptr, "<a><b /></a>", 12), "got %s\n", ptr); - GlobalUnlock(hglobal); + CHECK_OUTPUT(stream, "<a><b /></a>"); IXmlWriter_Release(writer); IStream_Release(stream); @@ -732,9 +712,7 @@ static void test_WriteComment(void) static const WCHAR bW[] = {'b',0}; IXmlWriter *writer; IStream *stream; - HGLOBAL hglobal; HRESULT hr; - char *ptr; hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -772,13 +750,7 @@ static void test_WriteComment(void) hr = IXmlWriter_Flush(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - hr = GetHGlobalFromStream(stream, &hglobal); - ok(hr == S_OK, "got 0x%08x\n", hr); - - ptr = GlobalLock(hglobal); - ok(ptr != NULL, "got %p\n", ptr); - ok(!strncmp(ptr, "<!--a--><b><!--a--><!----><!--- ->-->", 37), "got %s\n", ptr); - GlobalUnlock(hglobal); + CHECK_OUTPUT(stream, "<!--a--><b><!--a--><!----><!--- ->-->"); IXmlWriter_Release(writer); IStream_Release(stream); @@ -792,9 +764,7 @@ static void test_WriteCData(void) static const WCHAR bW[] = {'b',0}; IXmlWriter *writer; IStream *stream; - HGLOBAL hglobal; HRESULT hr; - char *ptr; hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -829,22 +799,14 @@ static void test_WriteCData(void) hr = IXmlWriter_Flush(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - hr = GetHGlobalFromStream(stream, &hglobal); - ok(hr == S_OK, "got 0x%08x\n", hr); - - ptr = GlobalLock(hglobal); - ok(ptr != NULL, "got %p\n", ptr); - - ok(!strncmp(ptr, + CHECK_OUTPUT(stream, "<b>" "<![CDATA[a]]>" "<![CDATA[]]>" "<![CDATA[]]]]>" "<![CDATA[>]]>" "<![CDATA[a]]]]>" - "<![CDATA[>b]]>", 84), "got %s\n", ptr); - - GlobalUnlock(hglobal); + "<![CDATA[>b]]>"); IXmlWriter_Release(writer); IStream_Release(stream); @@ -855,9 +817,7 @@ static void test_WriteRaw(void) static const WCHAR rawW[] = {'a','<',':',0}; IXmlWriter *writer; IStream *stream; - HGLOBAL hglobal; HRESULT hr; - char *ptr; hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -895,17 +855,7 @@ static void test_WriteRaw(void) hr = IXmlWriter_Flush(writer); ok(hr == S_OK, "got 0x%08x\n", hr); - hr = GetHGlobalFromStream(stream, &hglobal); - ok(hr == S_OK, "got 0x%08x\n", hr); - - ptr = GlobalLock(hglobal); - ok(ptr != NULL, "got %p\n", ptr); - - ok(!strncmp(ptr, - "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" - "a<:", 41), "got %s\n", ptr); - - GlobalUnlock(hglobal); + CHECK_OUTPUT(stream, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>a<:"); IXmlWriter_Release(writer); IStream_Release(stream);
1
0
0
0
Nikolay Sivov : xmllite/tests: Use static linking to xmllite.dll.
by Alexandre Julliard
22 Mar '16
22 Mar '16
Module: wine Branch: master Commit: b9b2dafb506e8653191b30f2c54d78595937add8 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=b9b2dafb506e8653191b30f2c…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Mar 22 10:10:37 2016 +0300 xmllite/tests: Use static linking to xmllite.dll. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/xmllite/tests/Makefile.in | 2 +- dlls/xmllite/tests/reader.c | 76 +++++++++++++---------------------------- dlls/xmllite/tests/writer.c | 77 ++++++++++++------------------------------ include/xmllite.idl | 2 ++ 4 files changed, 48 insertions(+), 109 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=b9b2dafb506e8653191b3…
1
0
0
0
Nikolay Sivov : xmllite/writer: Implement WriteRaw().
by Alexandre Julliard
22 Mar '16
22 Mar '16
Module: wine Branch: master Commit: 41f22e4cd12d85e93b0d3577509be910359cdba8 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=41f22e4cd12d85e93b0d35775…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Mar 22 10:10:36 2016 +0300 xmllite/writer: Implement WriteRaw(). Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/xmllite/tests/writer.c | 62 ++++++++++++++++++++++++++++ dlls/xmllite/writer.c | 98 ++++++++++++++++++++++++++++----------------- 2 files changed, 123 insertions(+), 37 deletions(-) diff --git a/dlls/xmllite/tests/writer.c b/dlls/xmllite/tests/writer.c index 6f2232e..ead9145 100644 --- a/dlls/xmllite/tests/writer.c +++ b/dlls/xmllite/tests/writer.c @@ -880,6 +880,67 @@ static void test_WriteCData(void) IStream_Release(stream); } +static void test_WriteRaw(void) +{ + static const WCHAR rawW[] = {'a','<',':',0}; + IXmlWriter *writer; + IStream *stream; + HGLOBAL hglobal; + HRESULT hr; + char *ptr; + + hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = pCreateXmlWriter(&IID_IXmlWriter, (void**)&writer, NULL); + ok(hr == S_OK, "Expected S_OK, got %08x\n", hr); + + hr = IXmlWriter_WriteRaw(writer, NULL); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = IXmlWriter_WriteRaw(writer, rawW); + ok(hr == E_UNEXPECTED, "got 0x%08x\n", hr); + + hr = IXmlWriter_SetOutput(writer, (IUnknown*)stream); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = IXmlWriter_WriteRaw(writer, NULL); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = IXmlWriter_WriteRaw(writer, rawW); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = IXmlWriter_WriteStartDocument(writer, XmlStandalone_Yes); + ok(hr == WR_E_INVALIDACTION, "got 0x%08x\n", hr); + + hr = IXmlWriter_WriteComment(writer, rawW); + ok(hr == WR_E_INVALIDACTION, "got 0x%08x\n", hr); + + hr = IXmlWriter_WriteEndDocument(writer); + ok(hr == WR_E_INVALIDACTION, "got 0x%08x\n", hr); + + hr = IXmlWriter_WriteRaw(writer, rawW); + ok(hr == WR_E_INVALIDACTION, "got 0x%08x\n", hr); + + hr = IXmlWriter_Flush(writer); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = GetHGlobalFromStream(stream, &hglobal); + ok(hr == S_OK, "got 0x%08x\n", hr); + + ptr = GlobalLock(hglobal); + ok(ptr != NULL, "got %p\n", ptr); + + ok(!strncmp(ptr, + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "a<:", 41), "got %s\n", ptr); + + GlobalUnlock(hglobal); + + IXmlWriter_Release(writer); + IStream_Release(stream); +} + START_TEST(writer) { if (!init_pointers()) @@ -896,4 +957,5 @@ START_TEST(writer) test_writeenddocument(); test_WriteComment(); test_WriteCData(); + test_WriteRaw(); } diff --git a/dlls/xmllite/writer.c b/dlls/xmllite/writer.c index 3e74389..dac7f04 100644 --- a/dlls/xmllite/writer.c +++ b/dlls/xmllite/writer.c @@ -372,6 +372,40 @@ static HRESULT write_encoding_bom(xmlwriter *writer) return S_OK; } +static HRESULT write_xmldecl(xmlwriter *writer, XmlStandalone standalone) +{ + static const WCHAR versionW[] = {'<','?','x','m','l',' ','v','e','r','s','i','o','n','=','"','1','.','0','"'}; + static const WCHAR encodingW[] = {' ','e','n','c','o','d','i','n','g','='}; + + write_encoding_bom(writer); + writer->state = XmlWriterState_DocStarted; + if (writer->omitxmldecl) return S_OK; + + /* version */ + write_output_buffer(writer->output, versionW, ARRAY_SIZE(versionW)); + + /* encoding */ + write_output_buffer(writer->output, encodingW, ARRAY_SIZE(encodingW)); + write_output_buffer_quoted(writer->output, get_encoding_name(writer->output->encoding), -1); + + /* standalone */ + if (standalone == XmlStandalone_Omit) + write_output_buffer(writer->output, closepiW, ARRAY_SIZE(closepiW)); + else { + static const WCHAR standaloneW[] = {' ','s','t','a','n','d','a','l','o','n','e','=','\"'}; + static const WCHAR yesW[] = {'y','e','s','\"','?','>'}; + static const WCHAR noW[] = {'n','o','\"','?','>'}; + + write_output_buffer(writer->output, standaloneW, ARRAY_SIZE(standaloneW)); + if (standalone == XmlStandalone_Yes) + write_output_buffer(writer->output, yesW, ARRAY_SIZE(yesW)); + else + write_output_buffer(writer->output, noW, ARRAY_SIZE(noW)); + } + + return S_OK; +} + static HRESULT writer_close_starttag(xmlwriter *writer) { HRESULT hr; @@ -890,13 +924,32 @@ static HRESULT WINAPI xmlwriter_WriteQualifiedName(IXmlWriter *iface, LPCWSTR pw return E_NOTIMPL; } -static HRESULT WINAPI xmlwriter_WriteRaw(IXmlWriter *iface, LPCWSTR pwszData) +static HRESULT WINAPI xmlwriter_WriteRaw(IXmlWriter *iface, LPCWSTR data) { xmlwriter *This = impl_from_IXmlWriter(iface); - FIXME("%p %s\n", This, wine_dbgstr_w(pwszData)); + TRACE("%p %s\n", This, debugstr_w(data)); - return E_NOTIMPL; + if (!data) + return S_OK; + + switch (This->state) + { + case XmlWriterState_Initial: + return E_UNEXPECTED; + case XmlWriterState_Ready: + write_xmldecl(This, XmlStandalone_Omit); + /* fallthrough */ + case XmlWriterState_DocStarted: + case XmlWriterState_PIDocStarted: + break; + default: + return WR_E_INVALIDACTION; + } + + write_output_buffer(This->output, data, -1); + This->state = XmlWriterState_DocClosed; + return S_OK; } static HRESULT WINAPI xmlwriter_WriteRawChars(IXmlWriter *iface, const WCHAR *pwch, UINT cwch) @@ -908,10 +961,9 @@ static HRESULT WINAPI xmlwriter_WriteRawChars(IXmlWriter *iface, const WCHAR *p return E_NOTIMPL; } + static HRESULT WINAPI xmlwriter_WriteStartDocument(IXmlWriter *iface, XmlStandalone standalone) { - static const WCHAR versionW[] = {'<','?','x','m','l',' ','v','e','r','s','i','o','n','=','"','1','.','0','"'}; - static const WCHAR encodingW[] = {' ','e','n','c','o','d','i','n','g','='}; xmlwriter *This = impl_from_IXmlWriter(iface); TRACE("(%p)->(%d)\n", This, standalone); @@ -923,41 +975,13 @@ static HRESULT WINAPI xmlwriter_WriteStartDocument(IXmlWriter *iface, XmlStandal case XmlWriterState_PIDocStarted: This->state = XmlWriterState_DocStarted; return S_OK; - case XmlWriterState_DocStarted: - case XmlWriterState_ElemStarted: - case XmlWriterState_DocClosed: - return WR_E_INVALIDACTION; + case XmlWriterState_Ready: + break; default: - ; - } - - write_encoding_bom(This); - This->state = XmlWriterState_DocStarted; - if (This->omitxmldecl) return S_OK; - - /* version */ - write_output_buffer(This->output, versionW, ARRAY_SIZE(versionW)); - - /* encoding */ - write_output_buffer(This->output, encodingW, ARRAY_SIZE(encodingW)); - write_output_buffer_quoted(This->output, get_encoding_name(This->output->encoding), -1); - - /* standalone */ - if (standalone == XmlStandalone_Omit) - write_output_buffer(This->output, closepiW, ARRAY_SIZE(closepiW)); - else { - static const WCHAR standaloneW[] = {' ','s','t','a','n','d','a','l','o','n','e','=','\"'}; - static const WCHAR yesW[] = {'y','e','s','\"','?','>'}; - static const WCHAR noW[] = {'n','o','\"','?','>'}; - - write_output_buffer(This->output, standaloneW, ARRAY_SIZE(standaloneW)); - if (standalone == XmlStandalone_Yes) - write_output_buffer(This->output, yesW, ARRAY_SIZE(yesW)); - else - write_output_buffer(This->output, noW, ARRAY_SIZE(noW)); + return WR_E_INVALIDACTION; } - return S_OK; + return write_xmldecl(This, standalone); } static HRESULT WINAPI xmlwriter_WriteStartElement(IXmlWriter *iface, LPCWSTR prefix, LPCWSTR local_name, LPCWSTR uri)
1
0
0
0
Nikolay Sivov : msctf: Added stub ITextStoreACPServices support for context ITextStoreACPSink.
by Alexandre Julliard
22 Mar '16
22 Mar '16
Module: wine Branch: master Commit: 85210d46c437284a01163dfbaf4624a1d4274943 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=85210d46c437284a01163dfba…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Mar 22 10:09:37 2016 +0300 msctf: Added stub ITextStoreACPServices support for context ITextStoreACPSink. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Aric Stewart <aric(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msctf/context.c | 77 +++++++++++++++++++++++++++++++++++++++ dlls/msctf/tests/inputprocessor.c | 8 +++- include/msctf.idl | 30 +++++++++++++++ 3 files changed, 114 insertions(+), 1 deletion(-) diff --git a/dlls/msctf/context.c b/dlls/msctf/context.c index a649c38..5a45466 100644 --- a/dlls/msctf/context.c +++ b/dlls/msctf/context.c @@ -66,6 +66,7 @@ typedef struct tagContext { /* const ITfQueryEmbeddedVtbl *QueryEmbeddedVtbl; */ ITfSourceSingle ITfSourceSingle_iface; ITextStoreACPSink ITextStoreACPSink_iface; + ITextStoreACPServices ITextStoreACPServices_iface; LONG refCount; BOOL connected; @@ -121,6 +122,11 @@ static inline Context *impl_from_ITextStoreACPSink(ITextStoreACPSink *iface) return CONTAINING_RECORD(iface, Context, ITextStoreACPSink_iface); } +static inline Context *impl_from_ITextStoreACPServices(ITextStoreACPServices *iface) +{ + return CONTAINING_RECORD(iface, Context, ITextStoreACPServices_iface); +} + static void free_sink(ContextSink *sink) { IUnknown_Release(sink->interfaces.pIUnknown); @@ -791,6 +797,8 @@ static HRESULT WINAPI TextStoreACPSink_QueryInterface(ITextStoreACPSink *iface, { *ppvOut = &This->ITextStoreACPSink_iface; } + else if (IsEqualIID(iid, &IID_ITextStoreACPServices)) + *ppvOut = &This->ITextStoreACPServices_iface; if (*ppvOut) { @@ -963,6 +971,74 @@ static const ITextStoreACPSinkVtbl TextStoreACPSinkVtbl = TextStoreACPSink_OnEndEditTransaction }; +static HRESULT WINAPI TextStoreACPServices_QueryInterface(ITextStoreACPServices *iface, REFIID riid, void **obj) +{ + Context *This = impl_from_ITextStoreACPServices(iface); + return ITextStoreACPSink_QueryInterface(&This->ITextStoreACPSink_iface, riid, obj); +} + +static ULONG WINAPI TextStoreACPServices_AddRef(ITextStoreACPServices *iface) +{ + Context *This = impl_from_ITextStoreACPServices(iface); + return ITextStoreACPSink_AddRef(&This->ITextStoreACPSink_iface); +} + +static ULONG WINAPI TextStoreACPServices_Release(ITextStoreACPServices *iface) +{ + Context *This = impl_from_ITextStoreACPServices(iface); + return ITextStoreACPSink_Release(&This->ITextStoreACPSink_iface); +} + +static HRESULT WINAPI TextStoreACPServices_Serialize(ITextStoreACPServices *iface, ITfProperty *prop, ITfRange *range, + TF_PERSISTENT_PROPERTY_HEADER_ACP *header, IStream *stream) +{ + Context *This = impl_from_ITextStoreACPServices(iface); + + FIXME("stub: %p %p %p %p %p\n", This, prop, range, header, stream); + + return E_NOTIMPL; +} + +static HRESULT WINAPI TextStoreACPServices_Unserialize(ITextStoreACPServices *iface, ITfProperty *prop, + const TF_PERSISTENT_PROPERTY_HEADER_ACP *header, IStream *stream, ITfPersistentPropertyLoaderACP *loader) +{ + Context *This = impl_from_ITextStoreACPServices(iface); + + FIXME("stub: %p %p %p %p %p\n", This, prop, header, stream, loader); + + return E_NOTIMPL; +} + +static HRESULT WINAPI TextStoreACPServices_ForceLoadProperty(ITextStoreACPServices *iface, ITfProperty *prop) +{ + Context *This = impl_from_ITextStoreACPServices(iface); + + FIXME("stub: %p %p\n", This, prop); + + return E_NOTIMPL; +} + +static HRESULT WINAPI TextStoreACPServices_CreateRange(ITextStoreACPServices *iface, + LONG start, LONG end, ITfRangeACP **range) +{ + Context *This = impl_from_ITextStoreACPServices(iface); + + FIXME("stub: %p %d %d %p\n", This, start, end, range); + + return S_OK; +} + +static const ITextStoreACPServicesVtbl TextStoreACPServicesVtbl = +{ + TextStoreACPServices_QueryInterface, + TextStoreACPServices_AddRef, + TextStoreACPServices_Release, + TextStoreACPServices_Serialize, + TextStoreACPServices_Unserialize, + TextStoreACPServices_ForceLoadProperty, + TextStoreACPServices_CreateRange +}; + HRESULT Context_Constructor(TfClientId tidOwner, IUnknown *punk, ITfDocumentMgr *mgr, ITfContext **ppOut, TfEditCookie *pecTextStore) { Context *This; @@ -986,6 +1062,7 @@ HRESULT Context_Constructor(TfClientId tidOwner, IUnknown *punk, ITfDocumentMgr This->ITfInsertAtSelection_iface.lpVtbl = &InsertAtSelectionVtbl; This->ITfSourceSingle_iface.lpVtbl = &ContextSourceSingleVtbl; This->ITextStoreACPSink_iface.lpVtbl = &TextStoreACPSinkVtbl; + This->ITextStoreACPServices_iface.lpVtbl = &TextStoreACPServicesVtbl; This->refCount = 1; This->tidOwner = tidOwner; This->connected = FALSE; diff --git a/dlls/msctf/tests/inputprocessor.c b/dlls/msctf/tests/inputprocessor.c index a873345..080d7f0 100644 --- a/dlls/msctf/tests/inputprocessor.c +++ b/dlls/msctf/tests/inputprocessor.c @@ -226,12 +226,18 @@ static ULONG WINAPI TextStoreACP_Release(ITextStoreACP *iface) static HRESULT WINAPI TextStoreACP_AdviseSink(ITextStoreACP *iface, REFIID riid, IUnknown *punk, DWORD dwMask) { + ITextStoreACPServices *services; HRESULT hr; sink_fire_ok(&test_ACP_AdviseSink,"TextStoreACP_AdviseSink"); - hr = IUnknown_QueryInterface(punk, &IID_ITextStoreACPSink,(LPVOID*)(&ACPSink)); + hr = IUnknown_QueryInterface(punk, &IID_ITextStoreACPSink, (void**)&ACPSink); ok(SUCCEEDED(hr),"Unable to QueryInterface on sink\n"); + + hr = ITextStoreACPSink_QueryInterface(ACPSink, &IID_ITextStoreACPServices, (void**)&services); + ok(hr == S_OK, "got 0x%08x\n", hr); + ITextStoreACPServices_Release(services); + return S_OK; } diff --git a/include/msctf.idl b/include/msctf.idl index 0cfaacf..62dc0d6 100644 --- a/include/msctf.idl +++ b/include/msctf.idl @@ -97,6 +97,8 @@ interface ITfReadOnlyProperty; interface IEnumTfLanguageProfiles; interface ITfCompositionView; interface ITfKeyEventSink; +interface ITfPersistentPropertyLoaderACP; +interface ITfRangeACP; cpp_quote("#if 0") typedef [uuid(4f5d560f-5ab5-4dde-8c4d-404592857ab0)] UINT_PTR HKL; @@ -352,6 +354,34 @@ interface ITfRangeBackup : IUnknown [ object, + uuid(aa80e901-2021-11d2-93e0-0060b067b86e), + pointer_default(unique) +] +interface ITextStoreACPServices : IUnknown +{ + HRESULT Serialize( + [in] ITfProperty *prop, + [in] ITfRange *range, + [out] TF_PERSISTENT_PROPERTY_HEADER_ACP *header, + [in] IStream *stream); + + HRESULT Unserialize( + [in] ITfProperty *prop, + [in] const TF_PERSISTENT_PROPERTY_HEADER_ACP *header, + [in] IStream *stream, + [in] ITfPersistentPropertyLoaderACP *loader); + + HRESULT ForceLoadProperty( + [in] ITfProperty *prop); + + HRESULT CreateRange( + [in] LONG start, + [in] LONG end, + [out] ITfRangeACP **range); +} + +[ + object, uuid(aa80e7fd-2021-11d2-93e0-0060b067b86e), pointer_default(unique) ]
1
0
0
0
Nikolay Sivov : msctf: Make ITextStoreACPSink a part of context object.
by Alexandre Julliard
22 Mar '16
22 Mar '16
Module: wine Branch: master Commit: 80c91976a2693d16a113e2701f8e731786951e52 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=80c91976a2693d16a113e2701…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Tue Mar 22 10:09:36 2016 +0300 msctf: Make ITextStoreACPSink a part of context object. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Aric Stewart <aric(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msctf/context.c | 264 ++++++++++++++++++++------------------------------- 1 file changed, 102 insertions(+), 162 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=80c91976a2693d16a113e…
1
0
0
0
Alexandre Julliard : winebuild: Use a global flag to determine when to generate the get_pc thunk.
by Alexandre Julliard
22 Mar '16
22 Mar '16
Module: wine Branch: master Commit: ebb9c5e246f12b2147d085c4e8f343f23c231312 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=ebb9c5e246f12b2147d085c4e…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Tue Mar 22 17:59:30 2016 +0900 winebuild: Use a global flag to determine when to generate the get_pc thunk. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- tools/winebuild/build.h | 2 +- tools/winebuild/import.c | 13 +++---------- tools/winebuild/spec16.c | 3 +++ tools/winebuild/spec32.c | 7 ++++++- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/tools/winebuild/build.h b/tools/winebuild/build.h index f2f0e58..5cf984b 100644 --- a/tools/winebuild/build.h +++ b/tools/winebuild/build.h @@ -284,7 +284,6 @@ extern void read_undef_symbols( DLLSPEC *spec, char **argv ); extern void resolve_imports( DLLSPEC *spec ); extern int is_undefined( const char *name ); extern int has_imports(void); -extern int has_relays( DLLSPEC *spec ); extern void output_get_pc_thunk(void); extern void output_module( DLLSPEC *spec ); extern void output_stubs( DLLSPEC *spec ); @@ -363,5 +362,6 @@ extern struct strarray nm_command; extern char *cpu_option; extern char *arch_option; extern int thumb_mode; +extern int needs_get_pc_thunk; #endif /* __WINE_BUILD_H */ diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c index b549db8..69d4765 100644 --- a/tools/winebuild/import.c +++ b/tools/winebuild/import.c @@ -587,8 +587,7 @@ int is_undefined( const char *name ) /* output the get_pc thunk if needed */ void output_get_pc_thunk(void) { - if (target_cpu != CPU_x86) return; - if (!UsePIC) return; + assert( target_cpu == CPU_x86 ); output( "\n\t.text\n" ); output( "\t.align %d\n", get_alignment(4) ); output( "\t%s\n", func_declaration("__wine_spec_get_pc_thunk_eax") ); @@ -619,6 +618,7 @@ static void output_import_thunk( const char *name, const char *table, int pos ) { output( "\tcall %s\n", asm_name("__wine_spec_get_pc_thunk_eax") ); output( "1:\tjmp *%s+%d-1b(%%eax)\n", table, pos ); + needs_get_pc_thunk = 1; } break; case CPU_x86_64: @@ -1189,6 +1189,7 @@ void output_stubs( DLLSPEC *spec ) { output( "\tcall %s\n", asm_name("__wine_spec_get_pc_thunk_eax") ); output( "1:" ); + needs_get_pc_thunk = 1; if (exp_name) { output( "\tleal .L%s_string-1b(%%eax),%%ecx\n", name ); @@ -1291,14 +1292,6 @@ void output_imports( DLLSPEC *spec ) output_immediate_import_thunks(); output_delayed_import_thunks( spec ); output_external_link_imports( spec ); - if (!list_empty( &dll_imports ) || - !list_empty( &dll_delayed ) || - ext_link_imports.count || - has_stubs(spec) || - has_relays(spec)) - { - output_get_pc_thunk(); - } } /* output an import library for a Win32 module and additional object files */ diff --git a/tools/winebuild/spec16.c b/tools/winebuild/spec16.c index e837571..85bcf09 100644 --- a/tools/winebuild/spec16.c +++ b/tools/winebuild/spec16.c @@ -356,6 +356,7 @@ static void output_call16_function( ORDDEF *odp ) { output( "\tcall %s\n", asm_name("__wine_spec_get_pc_thunk_eax") ); output( "1:\tmovl wine_ldt_copy_ptr-1b(%%eax),%%esi\n" ); + needs_get_pc_thunk = 1; } else output( "\tmovl $%s,%%esi\n", asm_name("wine_ldt_copy") ); @@ -814,6 +815,7 @@ void output_spec16_file( DLLSPEC *spec16 ) resolve_imports( spec16 ); add_16bit_exports( spec32, spec16 ); + needs_get_pc_thunk = 0; output_standard_file_header(); output_module( spec32 ); output_module16( spec16 ); @@ -821,6 +823,7 @@ void output_spec16_file( DLLSPEC *spec16 ) output_exports( spec32 ); output_imports( spec16 ); if (is_undefined( "__wine_call_from_16" )) output_asm_relays16(); + if (needs_get_pc_thunk) output_get_pc_thunk(); if (spec16->main_module) { output( "\n\t%s\n", get_asm_string_section() ); diff --git a/tools/winebuild/spec32.c b/tools/winebuild/spec32.c index cb56abe..f3feb0f 100644 --- a/tools/winebuild/spec32.c +++ b/tools/winebuild/spec32.c @@ -46,6 +46,8 @@ #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 +int needs_get_pc_thunk = 0; + /* check if entry point needs a relay thunk */ static inline int needs_relay( const ORDDEF *odp ) { @@ -78,7 +80,7 @@ static int is_float_arg( const ORDDEF *odp, int arg ) } /* check if dll will output relay thunks */ -int has_relays( DLLSPEC *spec ) +static int has_relays( DLLSPEC *spec ) { int i; @@ -189,6 +191,7 @@ static void output_relay_debug( DLLSPEC *spec ) { output( "\tcall %s\n", asm_name("__wine_spec_get_pc_thunk_eax") ); output( "1:\tleal .L__wine_spec_relay_descr-1b(%%eax),%%eax\n" ); + needs_get_pc_thunk = 1; } else output( "\tmovl $.L__wine_spec_relay_descr,%%eax\n" ); output( "\tpushl %%eax\n" ); @@ -616,6 +619,7 @@ void output_module( DLLSPEC *spec ) */ void BuildSpec32File( DLLSPEC *spec ) { + needs_get_pc_thunk = 0; resolve_imports( spec ); output_standard_file_header(); output_module( spec ); @@ -623,6 +627,7 @@ void BuildSpec32File( DLLSPEC *spec ) output_exports( spec ); output_imports( spec ); if (is_undefined( "__wine_call_from_regs" )) output_asm_relays(); + if (needs_get_pc_thunk) output_get_pc_thunk(); output_resources( spec ); output_gnu_stack_note(); }
1
0
0
0
← Newer
1
...
24
25
26
27
28
29
30
...
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