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
January 2014
----- 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
3 participants
814 discussions
Start a n
N
ew thread
Alexandre Julliard : msvcp71: Import the correct msvcrt version.
by Alexandre Julliard
13 Jan '14
13 Jan '14
Module: wine Branch: master Commit: 0d72182bd80a18799022d75a3cc8a66c4912618e URL:
http://source.winehq.org/git/wine.git/?a=commit;h=0d72182bd80a18799022d75a3…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Jan 13 12:52:28 2014 +0100 msvcp71: Import the correct msvcrt version. --- dlls/msvcp71/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/msvcp71/Makefile.in b/dlls/msvcp71/Makefile.in index 03ce2cb..dfa0a2b 100644 --- a/dlls/msvcp71/Makefile.in +++ b/dlls/msvcp71/Makefile.in @@ -1,5 +1,5 @@ MODULE = msvcp71.dll -IMPORTS = msvcrt +IMPORTS = msvcr71 EXTRADEFS = -D_MSVCP_VER=71 PARENTSRC = ../msvcp90
1
0
0
0
Alexandre Julliard : msvcp90: Add wrappers for functions that don' t exist in old msvcrt versions.
by Alexandre Julliard
13 Jan '14
13 Jan '14
Module: wine Branch: master Commit: 645540beed24327a145b7571ba5fe6d58f890f48 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=645540beed24327a145b7571b…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Jan 13 12:52:17 2014 +0100 msvcp90: Add wrappers for functions that don't exist in old msvcrt versions. --- dlls/msvcp90/locale.c | 7 +++---- dlls/msvcp90/msvcp90.h | 7 +++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c index 0ae1d8d..263bb8c 100644 --- a/dlls/msvcp90/locale.c +++ b/dlls/msvcp90/locale.c @@ -20,7 +20,6 @@ #include <stdarg.h> -#include "msvcp90.h" #include "locale.h" #include "errno.h" #include "limits.h" @@ -29,14 +28,14 @@ #include "wchar.h" #include "wctype.h" #include "time.h" - -#include "wine/list.h" - #include "windef.h" #include "winbase.h" #include "winnls.h" +#include "msvcp90.h" #include "wine/unicode.h" +#include "wine/list.h" #include "wine/debug.h" + WINE_DEFAULT_DEBUG_CHANNEL(msvcp); char* __cdecl _Getdays(void); diff --git a/dlls/msvcp90/msvcp90.h b/dlls/msvcp90/msvcp90.h index b04faab..026a04d 100644 --- a/dlls/msvcp90/msvcp90.h +++ b/dlls/msvcp90/msvcp90.h @@ -515,3 +515,10 @@ typedef struct { double real; double imag; } complex_double; + +#if _MSVCP_VER < 80 +#define memcpy_s( dst, size, src, count ) (memcpy( (dst), (src), (count) ), 0) +#define memmove_s( dst, size, src, count ) (memmove( (dst), (src), (count) ), 0) +#define mbstowcs_s( ret, wcs, size, mbs, count ) (mbstowcs( (wcs), (mbs), (count) )) +#define hypotf( x, y ) ((float)hypot( (double)(x), (double)(y) )) +#endif
1
0
0
0
Alexandre Julliard : msvcp90: Avoid using get_current_locale that doesn' t exist in old msvcrt versions.
by Alexandre Julliard
13 Jan '14
13 Jan '14
Module: wine Branch: master Commit: c2b0732108ec9eb59fb26142abbfc5868caf7bfc URL:
http://source.winehq.org/git/wine.git/?a=commit;h=c2b0732108ec9eb59fb26142a…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Jan 13 12:51:53 2014 +0100 msvcp90: Avoid using get_current_locale that doesn't exist in old msvcrt versions. --- dlls/msvcp90/locale.c | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c index f428396..0ae1d8d 100644 --- a/dlls/msvcp90/locale.c +++ b/dlls/msvcp90/locale.c @@ -43,6 +43,8 @@ char* __cdecl _Getdays(void); char* __cdecl _Getmonths(void); void* __cdecl _Gettnames(void); unsigned int __cdecl ___lc_codepage_func(void); +int __cdecl ___lc_collate_cp_func(void); +const unsigned short* __cdecl __pctype_func(void); const locale_facet* __thiscall locale__Getfacet(const locale*, MSVCP_size_t); MSVCP_size_t __cdecl _Strftime(char*, MSVCP_size_t, const char*, const struct tm*, struct __lc_time_data*); @@ -589,13 +591,11 @@ ULONGLONG __cdecl _Getcoll(void) _Collvec collvec; ULONGLONG ull; } ret; - _locale_t locale = _get_current_locale(); TRACE("\n"); - ret.collvec.page = locale->locinfo->lc_collate_cp; - ret.collvec.handle = locale->locinfo->lc_handle[LC_COLLATE]; - _free_locale(locale); + ret.collvec.page = ___lc_collate_cp_func(); + ret.collvec.handle = ___lc_handle_func()[LC_COLLATE]; return ret.ull; } @@ -612,22 +612,17 @@ _Collvec* __thiscall _Locinfo__Getcoll(const _Locinfo *this, _Collvec *ret) /* _Getctype */ _Ctypevec* __cdecl _Getctype(_Ctypevec *ret) { - _locale_t locale = _get_current_locale(); short *table; TRACE("\n"); - ret->page = locale->locinfo->lc_codepage; - ret->handle = locale->locinfo->lc_handle[LC_COLLATE]; + ret->page = ___lc_codepage_func(); + ret->handle = ___lc_handle_func()[LC_COLLATE]; ret->delfl = TRUE; table = malloc(sizeof(short[256])); - if(!table) { - _free_locale(locale); - throw_exception(EXCEPTION_BAD_ALLOC, NULL); - } - memcpy(table, locale->locinfo->pctype, sizeof(short[256])); + if(!table) throw_exception(EXCEPTION_BAD_ALLOC, NULL); + memcpy(table, __pctype_func(), sizeof(short[256])); ret->table = table; - _free_locale(locale); return ret; } @@ -642,7 +637,6 @@ _Ctypevec* __thiscall _Locinfo__Getctype(const _Locinfo *this, _Ctypevec *ret) /* _Getcvt */ ULONGLONG __cdecl _Getcvt(void) { - _locale_t locale = _get_current_locale(); union { _Cvtvec cvtvec; ULONGLONG ull; @@ -650,9 +644,8 @@ ULONGLONG __cdecl _Getcvt(void) TRACE("\n"); - ret.cvtvec.page = locale->locinfo->lc_codepage; - ret.cvtvec.handle = locale->locinfo->lc_handle[LC_CTYPE]; - _free_locale(locale); + ret.cvtvec.page = ___lc_codepage_func(); + ret.cvtvec.handle = ___lc_handle_func()[LC_CTYPE]; return ret.ull; }
1
0
0
0
Alexandre Julliard : msvcp90: Don' t build the new-style string iterator functions for old msvcp versions.
by Alexandre Julliard
13 Jan '14
13 Jan '14
Module: wine Branch: master Commit: 581dd68c8a8c7660d1b5b2ce42608a6824507279 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=581dd68c8a8c7660d1b5b2ce4…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Jan 13 11:56:02 2014 +0100 msvcp90: Don't build the new-style string iterator functions for old msvcp versions. --- dlls/msvcp90/string.c | 1288 +++++++++++++++++++++++++------------------------ 1 file changed, 650 insertions(+), 638 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=581dd68c8a8c7660d1b5b…
1
0
0
0
Alexandre Julliard : msvcp90: Remove parameter checks from functions that are only used for old msvcp versions.
by Alexandre Julliard
13 Jan '14
13 Jan '14
Module: wine Branch: master Commit: 4d7255d2df5a9262970e532c3e078ea7cd75631a URL:
http://source.winehq.org/git/wine.git/?a=commit;h=4d7255d2df5a9262970e532c3…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Jan 13 11:50:36 2014 +0100 msvcp90: Remove parameter checks from functions that are only used for old msvcp versions. --- dlls/msvcp90/locale.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c index 45380d2..f428396 100644 --- a/dlls/msvcp90/locale.c +++ b/dlls/msvcp90/locale.c @@ -9713,12 +9713,6 @@ size_t __cdecl mbsrtowcs(wchar_t *dst, const char **pstr, size_t n, mbstate_t *s wchar_t wc; const char *src; - if (!pstr) - { - *_errno() = EINVAL; - _invalid_parameter( NULL, NULL, NULL, 0, 0 ); - return -1; - } src = *pstr; if (!state) state = &local_state; @@ -9757,12 +9751,6 @@ size_t __cdecl wcsrtombs(char *dst, const wchar_t **pstr, size_t n, mbstate_t *s char buffer[MB_LEN_MAX]; size_t ret = 0; - if (!pstr) - { - *_errno() = EINVAL; - _invalid_parameter( NULL, NULL, NULL, 0, 0 ); - return -1; - } src = *pstr; while (!dst || n > ret)
1
0
0
0
Alexandre Julliard : msvcp90: Call the appropriate secure function instead of duplicating the checks.
by Alexandre Julliard
13 Jan '14
13 Jan '14
Module: wine Branch: master Commit: 0f81fcb02fbcaf19e3ec60bde76053e03163bc29 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=0f81fcb02fbcaf19e3ec60bde…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Jan 13 11:50:10 2014 +0100 msvcp90: Call the appropriate secure function instead of duplicating the checks. --- dlls/msvcp90/string.c | 56 ++++++++++----------------------------------- dlls/msvcp90/tests/misc.c | 17 ++++++++------ 2 files changed, 22 insertions(+), 51 deletions(-) diff --git a/dlls/msvcp90/string.c b/dlls/msvcp90/string.c index 97b0f40..f5a9fa7 100644 --- a/dlls/msvcp90/string.c +++ b/dlls/msvcp90/string.c @@ -109,14 +109,8 @@ MSVCP_size_t CDECL MSVCP_char_traits_char_length(const char *str) char* CDECL MSVCP_char_traits_char__Copy_s(char *dest, MSVCP_size_t size, const char *src, MSVCP_size_t count) { - if(!dest || !src || size<count) { - if(dest && size) - dest[0] = '\0'; - _invalid_parameter(NULL, NULL, NULL, 0, 0); - return dest; - } - - return memcpy(dest, src, count); + memcpy_s(dest, size, src, count); + return dest; } /* ?copy@?$char_traits@D@std@@SAPADPADPBDI@Z */ @@ -140,14 +134,8 @@ const char * CDECL MSVCP_char_traits_char_find( char* CDECL MSVCP_char_traits_char__Move_s(char *dest, MSVCP_size_t size, const char *src, MSVCP_size_t count) { - if(!dest || !src || size<count) { - if(dest && size) - dest[0] = '\0'; - _invalid_parameter(NULL, NULL, NULL, 0, 0); - return dest; - } - - return memmove(dest, src, count); + memmove_s(dest, size, src, count); + return dest; } /* ?move@?$char_traits@D@std@@SAPADPADPBDI@Z */ @@ -245,14 +233,8 @@ MSVCP_size_t CDECL MSVCP_char_traits_wchar_length(const wchar_t *str) wchar_t* CDECL MSVCP_char_traits_wchar__Copy_s(wchar_t *dest, MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count) { - if(!dest || !src || size<count) { - if(dest && size) - dest[0] = '\0'; - _invalid_parameter(NULL, NULL, NULL, 0, 0); - return dest; - } - - return memcpy(dest, src, count * sizeof(wchar_t)); + memcpy_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t)); + return dest; } /* ?copy@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */ @@ -282,14 +264,8 @@ const wchar_t* CDECL MSVCP_char_traits_wchar_find( wchar_t* CDECL MSVCP_char_traits_wchar__Move_s(wchar_t *dest, MSVCP_size_t size, const wchar_t *src, MSVCP_size_t count) { - if(!dest || !src || size<count) { - if(dest && size) - dest[0] = '\0'; - _invalid_parameter(NULL, NULL, NULL, 0, 0); - return dest; - } - - return memmove(dest, src, count * sizeof(WCHAR)); + memmove_s(dest, size * sizeof(wchar_t), src, count * sizeof(wchar_t)); + return dest; } /* ?move@?$char_traits@_W@std@@SAPA_WPA_WPB_WI@Z */ @@ -404,12 +380,8 @@ MSVCP_size_t CDECL MSVCP_char_traits_short_length(const unsigned short *str) unsigned short * CDECL MSVCP_char_traits_short__Copy_s(unsigned short *dest, MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count) { - if(size<count) { - _invalid_parameter(NULL, NULL, NULL, 0, 0); - return dest; - } - - return memcpy(dest, src, count * sizeof(unsigned short)); + memcpy_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short)); + return dest; } /* ?copy@?$char_traits@G@std@@SAPAGPAGPBGI@Z */ @@ -439,12 +411,8 @@ const unsigned short* CDECL MSVCP_char_traits_short_find( unsigned short* CDECL MSVCP_char_traits_short__Move_s(unsigned short *dest, MSVCP_size_t size, const unsigned short *src, MSVCP_size_t count) { - if(size<count) { - _invalid_parameter(NULL, NULL, NULL, 0, 0); - return dest; - } - - return memmove(dest, src, count * sizeof(unsigned short)); + memmove_s(dest, size * sizeof(unsigned short), src, count * sizeof(unsigned short)); + return dest; } /* ?move@?$char_traits@G@std@@SAPAGPAGPBGI@Z */ diff --git a/dlls/msvcp90/tests/misc.c b/dlls/msvcp90/tests/misc.c index 445bb45..f294b2a 100644 --- a/dlls/msvcp90/tests/misc.c +++ b/dlls/msvcp90/tests/misc.c @@ -20,6 +20,7 @@ #include <locale.h> #include <wctype.h> #include <float.h> +#include <errno.h> #include <windef.h> #include <winbase.h> @@ -60,6 +61,7 @@ static void* (__cdecl *p_set_invalid_parameter_handler)(void*); static _locale_t (__cdecl *p__get_current_locale)(void); static void (__cdecl *p__free_locale)(_locale_t); static void (__cdecl *p_free)(void*); +static int * (__cdecl *p_errno)(void); static void (__cdecl *p_char_assign)(void*, const void*); static void (__cdecl *p_wchar_assign)(void*, const void*); @@ -196,7 +198,8 @@ static BOOL init(void) p__get_current_locale = (void*)GetProcAddress(msvcr, "_get_current_locale"); p__free_locale = (void*)GetProcAddress(msvcr, "_free_locale"); p_free = (void*)GetProcAddress(msvcr, "free"); - if(!p_set_invalid_parameter_handler || !p__get_current_locale || !p__free_locale || !p_free) { + p_errno = (void*)GetProcAddress(msvcr, "_errno"); + if(!p_set_invalid_parameter_handler || !p__get_current_locale || !p__free_locale || !p_free || !p_errno) { win_skip("Error setting tests environment\n"); return FALSE; } @@ -449,7 +452,7 @@ static void test_Copy_s(void) ok(dest[4] == '#', "dest[4] != '#'\n"); ok(!memcmp(dest, src, sizeof(char[4])), "dest = %s\n", dest); - errno = 0xdeadbeef; + *p_errno() = 0xdeadbeef; dest[0] = '#'; ret = p_Copy_s(dest, 3, src, 4); ok(ret == dest, "ret != dest\n"); @@ -457,21 +460,21 @@ static void test_Copy_s(void) ok(invalid_parameter==1, "invalid_parameter = %d\n", invalid_parameter); invalid_parameter = 0; - ok(errno == 0xdeadbeef, "errno = %d\n", errno); + ok(*p_errno() == ERANGE, "errno = %d\n", *p_errno()); - errno = 0xdeadbeef; + *p_errno() = 0xdeadbeef; p_Copy_s(NULL, 32, src, 4); ok(invalid_parameter==1, "invalid_parameter = %d\n", invalid_parameter); invalid_parameter = 0; - ok(errno == 0xdeadbeef, "errno = %d\n", errno); + ok(*p_errno() == EINVAL, "errno = %d\n", *p_errno()); - errno = 0xdeadbeef; + *p_errno() = 0xdeadbeef; p_Copy_s(dest, 32, NULL, 4); ok(invalid_parameter==1, "invalid_parameter = %d\n", invalid_parameter); invalid_parameter = 0; - ok(errno == 0xdeadbeef, "errno = %d\n", errno); + ok(*p_errno() == EINVAL, "errno = %d\n", *p_errno()); } static void test_wctype(void)
1
0
0
0
Alexandre Julliard : msvcrt: Return per-thread information also in lc_codepage_func and lc_handle_func.
by Alexandre Julliard
13 Jan '14
13 Jan '14
Module: wine Branch: master Commit: b88630a42d07bbdbe7710a5a2460be991761cde3 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=b88630a42d07bbdbe7710a5a2…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Jan 13 14:02:44 2014 +0100 msvcrt: Return per-thread information also in lc_codepage_func and lc_handle_func. --- dlls/msvcrt/locale.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c index 4e8467a..7a33376 100644 --- a/dlls/msvcrt/locale.c +++ b/dlls/msvcrt/locale.c @@ -613,7 +613,7 @@ int CDECL __lconv_init(void) */ LCID* CDECL ___lc_handle_func(void) { - return MSVCRT___lc_handle; + return get_locinfo()->lc_handle; } /********************************************************************* @@ -621,7 +621,7 @@ LCID* CDECL ___lc_handle_func(void) */ unsigned int CDECL ___lc_codepage_func(void) { - return MSVCRT___lc_codepage; + return get_locinfo()->lc_codepage; } /*********************************************************************
1
0
0
0
Michael Stefaniuc : dmscript: Include the DMUS_OBJECTDESC directly into DirectMusicScriptTrack.
by Alexandre Julliard
13 Jan '14
13 Jan '14
Module: wine Branch: master Commit: ae81a130d24f549433903e38ba50f1752a022fa8 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=ae81a130d24f549433903e38b…
Author: Michael Stefaniuc <mstefani(a)redhat.de> Date: Sun Jan 12 22:16:23 2014 +0100 dmscript: Include the DMUS_OBJECTDESC directly into DirectMusicScriptTrack. --- dlls/dmscript/scripttrack.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/dlls/dmscript/scripttrack.c b/dlls/dmscript/scripttrack.c index 86e5521..ddae8b5 100644 --- a/dlls/dmscript/scripttrack.c +++ b/dlls/dmscript/scripttrack.c @@ -29,7 +29,7 @@ typedef struct DirectMusicScriptTrack { IDirectMusicTrack8 IDirectMusicTrack8_iface; IPersistStream IPersistStream_iface; LONG ref; - LPDMUS_OBJECTDESC pDesc; + DMUS_OBJECTDESC desc; } DirectMusicScriptTrack; static inline DirectMusicScriptTrack *impl_from_IDirectMusicTrack8(IDirectMusicTrack8 *iface) @@ -318,10 +318,9 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicScriptTrack(REFIID riid, void **ret_iface track->IDirectMusicTrack8_iface.lpVtbl = &dmtrack8_vtbl; track->IPersistStream_iface.lpVtbl = &persist_vtbl; - track->pDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DMUS_OBJECTDESC)); - DM_STRUCT_INIT(track->pDesc); - track->pDesc->dwValidData |= DMUS_OBJ_CLASS; - track->pDesc->guidClass = CLSID_DirectMusicScriptTrack; + track->desc.dwSize = sizeof(track->desc); + track->desc.dwValidData |= DMUS_OBJ_CLASS; + track->desc.guidClass = CLSID_DirectMusicScriptTrack; track->ref = 1; DMSCRIPT_LockModule();
1
0
0
0
Michael Stefaniuc : dmscript: Remove the extraneous IUnknown from DirectMusicScriptTrack.
by Alexandre Julliard
13 Jan '14
13 Jan '14
Module: wine Branch: master Commit: a5135bdc59c1dcb5d6ffd57a4dbecc9fd44dc077 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=a5135bdc59c1dcb5d6ffd57a4…
Author: Michael Stefaniuc <mstefani(a)redhat.de> Date: Sun Jan 12 22:14:33 2014 +0100 dmscript: Remove the extraneous IUnknown from DirectMusicScriptTrack. Also lock/unlock the module only on creation/destruction of the object. --- dlls/dmscript/scripttrack.c | 118 +++++++++++++++++-------------------------- 1 file changed, 46 insertions(+), 72 deletions(-) diff --git a/dlls/dmscript/scripttrack.c b/dlls/dmscript/scripttrack.c index 63ab577..86e5521 100644 --- a/dlls/dmscript/scripttrack.c +++ b/dlls/dmscript/scripttrack.c @@ -26,15 +26,12 @@ WINE_DEFAULT_DEBUG_CHANNEL(dmscript); */ typedef struct DirectMusicScriptTrack { - const IUnknownVtbl *UnknownVtbl; IDirectMusicTrack8 IDirectMusicTrack8_iface; IPersistStream IPersistStream_iface; LONG ref; LPDMUS_OBJECTDESC pDesc; } DirectMusicScriptTrack; -typedef struct DirectMusicScriptTrack IDirectMusicScriptTrack; - static inline DirectMusicScriptTrack *impl_from_IDirectMusicTrack8(IDirectMusicTrack8 *iface) { return CONTAINING_RECORD(iface, DirectMusicScriptTrack, IDirectMusicTrack8_iface); @@ -45,80 +42,53 @@ static inline DirectMusicScriptTrack *impl_from_IPersistStream(IPersistStream *i return CONTAINING_RECORD(iface, DirectMusicScriptTrack, IPersistStream_iface); } -/* IDirectMusicScriptTrack IUnknown part: */ -static HRESULT WINAPI IDirectMusicScriptTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj) { - ICOM_THIS_MULTI(IDirectMusicScriptTrack, UnknownVtbl, iface); - - TRACE("(%p, %s, %p)\n", This, debugstr_dmguid(riid), ppobj); - if (IsEqualIID (riid, &IID_IUnknown)) { - *ppobj = &This->UnknownVtbl; - IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl); - return S_OK; - } else if (IsEqualIID (riid, &IID_IDirectMusicTrack) - || IsEqualIID (riid, &IID_IDirectMusicTrack8)) { - *ppobj = &This->IDirectMusicTrack8_iface; - IDirectMusicTrack_AddRef(&This->IDirectMusicTrack8_iface); - return S_OK; - } else if (IsEqualIID (riid, &IID_IPersistStream)) { - *ppobj = &This->IPersistStream_iface; - IPersistStream_AddRef(&This->IPersistStream_iface); - return S_OK; - } - - WARN("(%p, %s, %p): not found\n", This, debugstr_dmguid(riid), ppobj); - return E_NOINTERFACE; -} - -static ULONG WINAPI IDirectMusicScriptTrack_IUnknown_AddRef (LPUNKNOWN iface) { - ICOM_THIS_MULTI(IDirectMusicScriptTrack, UnknownVtbl, iface); - ULONG ref = InterlockedIncrement(&This->ref); - - TRACE("(%p): AddRef from %d\n", This, ref - 1); - - DMSCRIPT_LockModule(); - - return ref; -} - -static ULONG WINAPI IDirectMusicScriptTrack_IUnknown_Release (LPUNKNOWN iface) { - ICOM_THIS_MULTI(IDirectMusicScriptTrack, UnknownVtbl, iface); - ULONG ref = InterlockedDecrement(&This->ref); - - TRACE("(%p): ReleaseRef to %d\n", This, ref); - - if (ref == 0) { - HeapFree(GetProcessHeap(), 0, This); - } - - DMSCRIPT_UnlockModule(); - - return ref; -} - -static const IUnknownVtbl DirectMusicScriptTrack_Unknown_Vtbl = { - IDirectMusicScriptTrack_IUnknown_QueryInterface, - IDirectMusicScriptTrack_IUnknown_AddRef, - IDirectMusicScriptTrack_IUnknown_Release -}; - -/* IDirectMusicScriptTrack IDirectMusicTrack8 part: */ +/* DirectMusicScriptTrack IDirectMusicTrack8 part: */ static HRESULT WINAPI IDirectMusicTrack8Impl_QueryInterface(IDirectMusicTrack8 *iface, REFIID riid, void **ret_iface) { DirectMusicScriptTrack *This = impl_from_IDirectMusicTrack8(iface); - return IDirectMusicScriptTrack_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ret_iface); + + TRACE("(%p, %s, %p)\n", This, debugstr_dmguid(riid), ret_iface); + + *ret_iface = NULL; + + if (IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IDirectMusicTrack) || + IsEqualIID(riid, &IID_IDirectMusicTrack8)) + *ret_iface = iface; + else if (IsEqualIID(riid, &IID_IPersistStream)) + *ret_iface = &This->IPersistStream_iface; + else { + WARN("(%p, %s, %p): not found\n", This, debugstr_dmguid(riid), ret_iface); + return E_NOINTERFACE; + } + + IUnknown_AddRef((IUnknown*)*ret_iface); + return S_OK; } static ULONG WINAPI IDirectMusicTrack8Impl_AddRef(IDirectMusicTrack8 *iface) { DirectMusicScriptTrack *This = impl_from_IDirectMusicTrack8(iface); - return IDirectMusicScriptTrack_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl); + LONG ref = InterlockedIncrement(&This->ref); + + TRACE("(%p) ref=%d\n", This, ref); + + return ref; } static ULONG WINAPI IDirectMusicTrack8Impl_Release(IDirectMusicTrack8 *iface) { DirectMusicScriptTrack *This = impl_from_IDirectMusicTrack8(iface); - return IDirectMusicScriptTrack_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl); + LONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p) ref=%d\n", This, ref); + + if (!ref) { + HeapFree(GetProcessHeap(), 0, This); + DMSCRIPT_UnlockModule(); + } + + return ref; } static HRESULT WINAPI IDirectMusicTrack8Impl_Init(IDirectMusicTrack8 *iface, @@ -274,22 +244,22 @@ static const IDirectMusicTrack8Vtbl dmtrack8_vtbl = { /* IDirectMusicScriptTrack IPersistStream part: */ static HRESULT WINAPI IPersistStreamImpl_QueryInterface(IPersistStream *iface, REFIID riid, - void **ppobj) + void **ret_iface) { DirectMusicScriptTrack *This = impl_from_IPersistStream(iface); - return IDirectMusicScriptTrack_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj); + return IDirectMusicTrack8_QueryInterface(&This->IDirectMusicTrack8_iface, riid, ret_iface); } static ULONG WINAPI IPersistStreamImpl_AddRef(IPersistStream *iface) { DirectMusicScriptTrack *This = impl_from_IPersistStream(iface); - return IDirectMusicScriptTrack_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl); + return IDirectMusicTrack8_AddRef(&This->IDirectMusicTrack8_iface); } static ULONG WINAPI IPersistStreamImpl_Release(IPersistStream *iface) { DirectMusicScriptTrack *This = impl_from_IPersistStream(iface); - return IDirectMusicScriptTrack_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl); + return IDirectMusicTrack8_Release(&This->IDirectMusicTrack8_iface); } static HRESULT WINAPI IPersistStreamImpl_GetClassID(IPersistStream *iface, CLSID *pClassID) @@ -331,12 +301,13 @@ static const IPersistStreamVtbl persist_vtbl = { }; /* for ClassFactory */ -HRESULT WINAPI DMUSIC_CreateDirectMusicScriptTrack(LPCGUID lpcGUID, void **ppobj, +HRESULT WINAPI DMUSIC_CreateDirectMusicScriptTrack(REFIID riid, void **ret_iface, IUnknown *pUnkOuter) { DirectMusicScriptTrack *track; + HRESULT hr; - *ppobj = NULL; + *ret_iface = NULL; if (pUnkOuter) return CLASS_E_NOAGGREGATION; @@ -345,14 +316,17 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicScriptTrack(LPCGUID lpcGUID, void **ppobj if (!track) return E_OUTOFMEMORY; - track->UnknownVtbl = &DirectMusicScriptTrack_Unknown_Vtbl; track->IDirectMusicTrack8_iface.lpVtbl = &dmtrack8_vtbl; track->IPersistStream_iface.lpVtbl = &persist_vtbl; track->pDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DMUS_OBJECTDESC)); DM_STRUCT_INIT(track->pDesc); track->pDesc->dwValidData |= DMUS_OBJ_CLASS; track->pDesc->guidClass = CLSID_DirectMusicScriptTrack; - track->ref = 0; /* will be inited by QueryInterface */ + track->ref = 1; + + DMSCRIPT_LockModule(); + hr = IDirectMusicTrack8_QueryInterface(&track->IDirectMusicTrack8_iface, riid, ret_iface); + IDirectMusicTrack8_Release(&track->IDirectMusicTrack8_iface); - return IDirectMusicScriptTrack_IUnknown_QueryInterface ((LPUNKNOWN)&track->UnknownVtbl, lpcGUID, ppobj); + return hr; }
1
0
0
0
Michael Stefaniuc : dmscript: COM cleanup for IPersistStream from DirectMusicScriptTrack.
by Alexandre Julliard
13 Jan '14
13 Jan '14
Module: wine Branch: master Commit: daf7fb1f2d6f94c129851eec0a5c0eb8f752be81 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=daf7fb1f2d6f94c129851eec0…
Author: Michael Stefaniuc <mstefani(a)redhat.de> Date: Sun Jan 12 22:13:06 2014 +0100 dmscript: COM cleanup for IPersistStream from DirectMusicScriptTrack. --- dlls/dmscript/scripttrack.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/dlls/dmscript/scripttrack.c b/dlls/dmscript/scripttrack.c index 7b5a4ec..63ab577 100644 --- a/dlls/dmscript/scripttrack.c +++ b/dlls/dmscript/scripttrack.c @@ -28,7 +28,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(dmscript); typedef struct DirectMusicScriptTrack { const IUnknownVtbl *UnknownVtbl; IDirectMusicTrack8 IDirectMusicTrack8_iface; - const IPersistStreamVtbl *PersistStreamVtbl; + IPersistStream IPersistStream_iface; LONG ref; LPDMUS_OBJECTDESC pDesc; } DirectMusicScriptTrack; @@ -40,6 +40,11 @@ static inline DirectMusicScriptTrack *impl_from_IDirectMusicTrack8(IDirectMusicT return CONTAINING_RECORD(iface, DirectMusicScriptTrack, IDirectMusicTrack8_iface); } +static inline DirectMusicScriptTrack *impl_from_IPersistStream(IPersistStream *iface) +{ + return CONTAINING_RECORD(iface, DirectMusicScriptTrack, IPersistStream_iface); +} + /* IDirectMusicScriptTrack IUnknown part: */ static HRESULT WINAPI IDirectMusicScriptTrack_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj) { ICOM_THIS_MULTI(IDirectMusicScriptTrack, UnknownVtbl, iface); @@ -55,8 +60,8 @@ static HRESULT WINAPI IDirectMusicScriptTrack_IUnknown_QueryInterface (LPUNKNOWN IDirectMusicTrack_AddRef(&This->IDirectMusicTrack8_iface); return S_OK; } else if (IsEqualIID (riid, &IID_IPersistStream)) { - *ppobj = &This->PersistStreamVtbl; - IPersistStream_AddRef ((LPPERSISTSTREAM)&This->PersistStreamVtbl); + *ppobj = &This->IPersistStream_iface; + IPersistStream_AddRef(&This->IPersistStream_iface); return S_OK; } @@ -271,19 +276,19 @@ static const IDirectMusicTrack8Vtbl dmtrack8_vtbl = { static HRESULT WINAPI IPersistStreamImpl_QueryInterface(IPersistStream *iface, REFIID riid, void **ppobj) { - ICOM_THIS_MULTI(IDirectMusicScriptTrack, PersistStreamVtbl, iface); + DirectMusicScriptTrack *This = impl_from_IPersistStream(iface); return IDirectMusicScriptTrack_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj); } static ULONG WINAPI IPersistStreamImpl_AddRef(IPersistStream *iface) { - ICOM_THIS_MULTI(IDirectMusicScriptTrack, PersistStreamVtbl, iface); + DirectMusicScriptTrack *This = impl_from_IPersistStream(iface); return IDirectMusicScriptTrack_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl); } static ULONG WINAPI IPersistStreamImpl_Release(IPersistStream *iface) { - ICOM_THIS_MULTI(IDirectMusicScriptTrack, PersistStreamVtbl, iface); + DirectMusicScriptTrack *This = impl_from_IPersistStream(iface); return IDirectMusicScriptTrack_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl); } @@ -314,7 +319,7 @@ static HRESULT WINAPI IPersistStreamImpl_GetSizeMax(IPersistStream *iface, ULARG return E_NOTIMPL; } -static const IPersistStreamVtbl DirectMusicScriptTrack_PersistStream_Vtbl = { +static const IPersistStreamVtbl persist_vtbl = { IPersistStreamImpl_QueryInterface, IPersistStreamImpl_AddRef, IPersistStreamImpl_Release, @@ -342,7 +347,7 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicScriptTrack(LPCGUID lpcGUID, void **ppobj track->UnknownVtbl = &DirectMusicScriptTrack_Unknown_Vtbl; track->IDirectMusicTrack8_iface.lpVtbl = &dmtrack8_vtbl; - track->PersistStreamVtbl = &DirectMusicScriptTrack_PersistStream_Vtbl; + track->IPersistStream_iface.lpVtbl = &persist_vtbl; track->pDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DMUS_OBJECTDESC)); DM_STRUCT_INIT(track->pDesc); track->pDesc->dwValidData |= DMUS_OBJ_CLASS;
1
0
0
0
← Newer
1
...
32
33
34
35
36
37
38
...
82
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
Results per page:
10
25
50
100
200