Wine-Devel
By thread
wine-devel@list.winehq.org
By month
Messages by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
July 2008
- 135 participants
- 1045 messages
Re: Tests and Valgrinding
by Rob Shearman
2008/7/2 Dan Kegel <dank(a)kegel.com>:
> Zachary Goldberg wrote:
>> Also, Dan Kegel has been extraordinarily diligent in valgrinding of
>> late (/applause) and I just wanted to ask if we're doing anything to
>> support him?
>
> A few people are starting to run Valgrind themselves.
> How about this: if you ever post a patch that causes a
> valgrind warning, you send yourself to valgrind jail for a month,
> and valgrind every patch you write before you send it in...
While I find Valgrind a very useful tool, not all of us are on
platforms that Valgrind supports. However, I'm happy to receive emails
about new Valgrind warnings from either Dan himself or from an
automated tool directed to a mailing list.
>> perhaps making Valgrind-passing a requirement (along
>> with not breaking tests) for being committed. I think perhaps
>> we should take a look at this and seriously consider implementing it.
>
> As a first step, James and I could (along with posting the errors
> to wine-devel) also post patches to revert the guilty changes.
> (And if we do it quickly enough, perhaps Alexandre can
> do the revert on the same day...)
> Then the author could fix and resubmit.
> How's that sound?
Some Valgrind warnings are already present in base code and are only
triggered by new code or new tests. Reverting these type of patches
would be wrong IMHO, although every effort should be made to correct
the warning.
--
Rob Shearman
July 2, 2008
Re: EnterCriticalSection throws exception?
by Rob Shearman
2008/7/2 Huang, Zhangrong <hzhrong(a)gmail.com>:
...
> On some conditions, a thread does
> need hold critical section more than 65 seconds, for example: wine's
> implementation of GetAddress uses a critical section to protect
> non-reentrant gethostbyname() (well maybe need another
> gethostbyname_r() patch), see dlls/wininet/utility.c
> As you can see, gethostbyname() may take longtime when DNS setting is
> wrong or network is broken. If a multi-thread app calls GetAddress
> simultaneous in many threads, the app will crash.
A bit of lateral thinking is needed, I feel, since contention between
threads is going to be an issue even if the lock doesn't time out. The
wininet code should be converted to using getaddrinfo and as a bonus
it will also start supporting IPv6 hosts.
--
Rob Shearman
July 2, 2008
Re: New winetricks 20080402: new verbs dotnet20, win2k, flash, msls31; updated mono, liberation
by Juergen Lock
In article <a71bd89a0804021431w79515034i84ff0e4c57af3353(a)mail.gmail.com> you write:
>Big news: as of today or so, wine doesn't need any patches
>to install the .net 2.0 runtime or run trivial .net 2.0 apps,
>so I've added a dotnet20 verb. No more futzing with recipes
>to try out simple .net 2 apps, huzzah!
>
>There are lots of other little changes, too:
>
>20080402
>r21 Added dotnet20, removed one kludge from dotnet11, added win2k
>verb, plus shorthand for winver=foo
>r20 Updated liberation fonts.
>[...]
I just had a need for this (dotnet20), and the dotnet installer crashed
like this on wine 1.1.0 on FreeBSD:
Unhandled exception 0xc06d007e at address 0x7e255934 (thread 0073), starting debugger...
err:seh:setup_exception_record nested exception on signal stack in thread 0074 eip 7e139a63 esp 0011b75c stack 0xbf8f1000-0xbf9ff000
(and there wine hung.)
I finally got things going by doing the same on wine 1.0 on debian sid
and then copying ~/.wine over - i.e. there dotnet20 worked.
Just thought I'd report this so ppl can at least try it on 1.1.0 on Linux
to see if the problem is FreeBSD specific...
Thanx,
Juergen
July 2, 2008
Re: winhttp: include/winhttp.h: Add more #define's for options
by Zac Brown
Zac Brown wrote:
> Add more #define's for options used in WinHttpOpenRequest,
> WinHttpSendRequest, and WinHttp{Set/Query}Options.
>
>
> ------------------------------------------------------------------------
>
> ---
> include/winhttp.h | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 66 insertions(+), 0 deletions(-)
>
> diff --git a/include/winhttp.h b/include/winhttp.h
> index ef2caff..e816c82 100644
> --- a/include/winhttp.h
> +++ b/include/winhttp.h
> @@ -62,6 +62,72 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
>
> #define ERROR_WINHTTP_AUTODETECTION_FAILED (WINHTTP_ERROR_BASE + 180)
>
> +/* Flags for WinHttp{Set/Query}Options */
> +#define WINHTTP_FIRST_OPTION WINHTTP_OPTION_CALLBACK
> +#define WINHTTP_OPTION_CALLBACK 1
> +#define WINHTTP_OPTION_RESOLVE_TIMEOUT 2
> +#define WINHTTP_OPTION_CONNECT_TIMEOUT 3
> +#define WINHTTP_OPTION_CONNECT_RETRIES 4
> +#define WINHTTP_OPTION_SEND_TIMEOUT 5
> +#define WINHTTP_OPTION_RECEIVE_TIMEOUT 6
> +#define WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT 7
> +#define WINHTTP_OPTION_HANDLE_TYPE 9
> +#define WINHTTP_OPTION_READ_BUFFER_SIZE 12
> +#define WINHTTP_OPTION_WRITE_BUFFER_SIZE 13
> +#define WINHTTP_OPTION_PARENT_HANDLE 21
> +#define WINHTTP_OPTION_EXTENDED_ERROR 24
> +#define WINHTTP_OPTION_SECURITY_FLAGS 31
> +#define WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT 32
> +#define WINHTTP_OPTION_URL 34
> +#define WINHTTP_OPTION_SECURITY_KEY_BITNESS 36
> +#define WINHTTP_OPTION_PROXY 38
> +#define WINHTTP_OPTION_USER_AGENT 41
> +#define WINHTTP_OPTION_CONTEXT_VALUE 45
> +#define WINHTTP_OPTION_CLIENT_CERT_CONTEXT 47
> +#define WINHTTP_OPTION_REQUEST_PRIORITY 58
> +#define WINHTTP_OPTION_HTTP_VERSION 59
> +#define WINHTTP_OPTION_DISABLE_FEATURE 63
> +#define WINHTTP_OPTION_CODEPAGE 68
> +#define WINHTTP_OPTION_MAX_CONNS_PER_SERVER 73
> +#define WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER 74
> +#define WINHTTP_OPTION_AUTOLOGON_POLICY 77
> +#define WINHTTP_OPTION_SERVER_CERT_CONTEXT 78
> +#define WINHTTP_OPTION_ENABLE_FEATURE 79
> +#define WINHTTP_OPTION_WORKER_THREAD_COUNT 80
> +#define WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT 81
> +#define WINHTTP_OPTION_PASSPORT_COBRANDING_URL 82
> +#define WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH 83
> +#define WINHTTP_OPTION_SECURE_PROTOCOLS 84
> +#define WINHTTP_OPTION_ENABLETRACING 85
> +#define WINHTTP_OPTION_PASSPORT_SIGN_OUT 86
> +#define WINHTTP_OPTION_PASSPORT_RETURN_URL 87
> +#define WINHTTP_OPTION_REDIRECT_POLICY 88
> +#define WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS 89
> +#define WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE 90
> +#define WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE 91
> +#define WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE 92
> +#define WINHTTP_OPTION_CONNECTION_INFO 93
> +#define WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST 94
> +#define WINHTTP_OPTION_SPN 96
> +#define WINHTTP_OPTION_GLOBAL_PROXY_CREDS 97
> +#define WINHTTP_OPTION_GLOBAL_SERVER_CREDS 98
> +#define WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT 99
> +#define WINHTTP_OPTION_REJECT_USERPWD_IN_URL 100
> +#define WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS 101
> +#define WINHTTP_LAST_OPTION WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS
> +#define WINHTTP_OPTION_USERNAME 0x1000
> +#define WINHTTP_OPTION_PASSWORD 0x1001
> +#define WINHTTP_OPTION_PROXY_USERNAME 0x1002
> +#define WINHTTP_OPTION_PROXY_PASSWORD 0x1003
> +
> +/* Option "prettifiers" for WinHttpOpenRequest */
> +#define WINHTTP_NO_REFERER NULL
> +#define WINHTTP_DEFAULT_ACCEPT_TYPES NULL
> +
> +/* Option "prettifiers" for WinHttpSendRequest */
> +#define WINHTTP_NO_ADDITIONAL_HEADERS NULL
> +#define WINHTTP_NO_REQUEST_DATA NULL
> +
> typedef struct
> {
> DWORD dwStructSize;
>
>
> ------------------------------------------------------------------------
>
>
Ignore this, bad comments.
July 2, 2008
Re: shell32: shellord.c: Implement SHGetNewLinkInfo[AW]. Fixes Bug 8082.
by Zac Brown
Zac Brown wrote:
> Implement SHGetNewLinkInfo[AW].
>
> Fixes Bug 8082 (http://bugs.winehq.org/show_bug.cgi?id=8082)
>
> Changes:
> * Implement SHGetNewLinkInfo[AW]
> * Update tests
>
>
> ------------------------------------------------------------------------
>
> ---
> dlls/shell32/shellord.c | 255 ++++++++++++++++++++++++++++++++++++++++-
> dlls/shell32/tests/shellord.c | 40 +++----
> 2 files changed, 269 insertions(+), 26 deletions(-)
>
> diff --git a/dlls/shell32/shellord.c b/dlls/shell32/shellord.c
> index 5d1666b..5b1f824 100644
> --- a/dlls/shell32/shellord.c
> +++ b/dlls/shell32/shellord.c
> @@ -4,6 +4,7 @@
> *
> * Copyright 1997 Marcus Meissner
> * 1998 Jürgen Schmied
> + * 2008 Google (Zac Brown)
> *
> * This library is free software; you can redistribute it and/or
> * modify it under the terms of the GNU Lesser General Public
> @@ -1899,22 +1900,270 @@ BOOL WINAPI SHObjectProperties(HWND hwnd, DWORD dwType, LPCWSTR szObject, LPCWST
> return TRUE;
> }
>
> +/*************************************************************************
> + * SHGetNewLinkInfoA [SHELL32.179]
> + *
> + * See SHGetNewLinkInfoW
> + */
> BOOL WINAPI SHGetNewLinkInfoA(LPCSTR pszLinkTo, LPCSTR pszDir, LPSTR pszName, BOOL *pfMustCopy,
> UINT uFlags)
> {
> - FIXME("%s, %s, %p, %p, 0x%08x - stub\n", debugstr_a(pszLinkTo), debugstr_a(pszDir),
> + BOOL ret;
> + CHAR pathA[MAX_PATH];
> + WCHAR pszLinkToW[MAX_PATH];
> + WCHAR pszDirW[MAX_PATH];
> + WCHAR pszNameW[MAX_PATH];
> + LPSTR tmp_ptr;
> +
> + TRACE("%s, %s, %p, %p, 0x%08x - stub\n", debugstr_a(pszLinkTo), debugstr_a(pszDir),
> pszName, pfMustCopy, uFlags);
>
> + if (pszLinkTo == NULL || pszName == NULL)
> + return FALSE;
> +
> + if (uFlags & SHGNLI_PIDL)
> + {
> + if (SHGetPathFromIDListA (pszLinkTo, pathA) == FALSE)
> + return FALSE;
> + tmp_ptr = pathA;
> + }
> + else
> + tmp_ptr = pszLinkTo;
> +
> +
> + if (MultiByteToWideChar(CP_ACP, 0, pszName, -1, pszNameW, MAX_PATH) == 0 ||
> + MultiByteToWideChar(CP_ACP, 0, tmp_ptr, -1, pszLinkToW, MAX_PATH) == 0)
> + return FALSE;
> +
> + if (pszDir != NULL)
> + {
> + if (MultiByteToWideChar(CP_ACP, 0, pszDir, -1, pszDirW, MAX_PATH) == 0)
> + return FALSE;
> + ret = SHGetNewLinkInfoW (pszLinkToW, pszDirW, pszNameW, pfMustCopy, uFlags);
> + }
> + else
> + ret = SHGetNewLinkInfoW (pszLinkToW, NULL, pszNameW, pfMustCopy, uFlags);
> +
> + if (WideCharToMultiByte(CP_ACP, 0, pszNameW, -1, pszName, MAX_PATH, 0, 0) && ret == TRUE)
> + return ret;
> +
> return FALSE;
> }
>
> +/*****************************************************************************************
> + * [INTERNAL]
> + * confirm_link_unique: Check if a supplied shortcut name is unique
> + * within a directory and if not, generate one
> + * that is for SHGetNewLinkInfoW.
> + *
> + * PARAMS
> + * directory [I] Directory to check for duplicates in
> + * filename [I] Name of file that a link is being made to
> + * flags [I] Flags passed to SHGetNewLinkInfoW
> + * shortcut_name [I/O] Shortcut name to check for. Could be modified
> + * if needed.
> + * name_updated [O] Set to true when the name of the shortcut has
> + * been updated.
> + *
> + * RETURNS
> + * Success: TRUE - The function successfully completed
> + * Failure: FALSE - The function was unable to complete its task
> + */
> +
> +static BOOL confirm_link_unique(LPCWSTR directory, LPCWSTR filename, UINT flags, LPWSTR shortcut_name)
> +{
> + static const WCHAR search_pattern[] = {'\\','*',0};
> + static const WCHAR prefix_start[] = {'S','h','o','r','t','c','u','t',' ',0};
> + static const WCHAR lnk_extension[] = {'.','l','n','k',0};
> + static const WCHAR prefix_format[] = {'S','h','o','r','t','c','u','t',' ','(','%','d',')',' ','t','o',' ','%','s',0};
> + static const WCHAR no_prefix_format[] = {'%','s',' ','(','%','d',')',0};
> + WCHAR filename_noext[MAX_PATH];
> + WCHAR tmp_buf[MAX_PATH];
> + WCHAR *tmp_ptr, *tmp_ptr2;
> + HANDLE h;
> + WIN32_FIND_DATAW find_data;
> + long shortcut_num = 1;
> +
> + /* Get name of file without the file extension */
> + tmp_ptr = strrchrW (filename, '.');
> + if (tmp_ptr != NULL)
> + {
> + if (lstrcpynW (filename_noext, filename, (tmp_ptr - filename)*sizeof(WCHAR)) == NULL)
> + return FALSE;
> + }
> + else
> + lstrcpyW (filename_noext, filename);
> +
> + if (directory != NULL)
> + {
> + if (lstrcpyW (tmp_buf, directory) == NULL)
> + return FALSE;
> + }
> + else
> + {
> + if (GetCurrentDirectoryW (MAX_PATH, tmp_buf) == 0)
> + return FALSE;
> + }
> +
> + if (lstrcatW (tmp_buf, search_pattern) == NULL)
> + return FALSE;
> +
> + h = FindFirstFileW (tmp_buf, &find_data);
> + if (h == INVALID_HANDLE_VALUE)
> + return FALSE;
> +
> + while (FindNextFileW (h, &find_data))
> + {
> + /* Skip if the filename doesn't even contain our shortcut's
> + target filename */
> + if (StrStrW (find_data.cFileName, filename_noext) == NULL)
> + continue;
> +
> + /* Skip if the prefix name flag is set, but no prefix is found
> + in the file's name. */
> + if (flags & SHGNLI_PREFIXNAME)
> + {
> + if (StrStrW (find_data.cFileName, prefix_start) == NULL)
> + continue;
> + }
> +
> + if(lstrcmpW (find_data.cFileName, shortcut_name) == 0)
> + shortcut_num++;
> + else
> + {
> + tmp_ptr = strchrW (find_data.cFileName, '(');
> + tmp_ptr2 = strchrW (find_data.cFileName, ')');
> + if (tmp_ptr && tmp_ptr2)
> + {
> + tmp_ptr++;
> + tmp_ptr2++;
> + lstrcpynW (tmp_buf, tmp_ptr, tmp_ptr2 - tmp_ptr);
> + shortcut_num = wcstol(tmp_buf, &tmp_buf[lstrlenW(tmp_buf)-1], 0) + 1;
> + }
> + }
> + }
> +
> + FindClose (h);
> +
> + if (shortcut_num > 1)
> + {
> + if (flags & SHGNLI_PREFIXNAME)
> + {
> + sprintfW (shortcut_name, prefix_format, shortcut_num, filename);
> + }
> + else
> + {
> + lstrcpyW (shortcut_name, filename);
> + wsprintfW (shortcut_name, no_prefix_format, filename, shortcut_num);
> + }
> +
> + if ((flags & SHGNLI_NOLNK) == 0)
> + lstrcatW (shortcut_name, lnk_extension);
> + }
> +
> + return TRUE;
> +}
> +
> +/*************************************************************************
> + * SHGetNewLinkInfoW [SHELL32.180]
> + *
> + * Creates the proper name for a new shortcut. This function does not
> + * actually create a shortcut.
> + */
> BOOL WINAPI SHGetNewLinkInfoW(LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszName, BOOL *pfMustCopy,
> UINT uFlags)
> {
> - FIXME("%s, %s, %p, %p, 0x%08x - stub\n", debugstr_w(pszLinkTo), debugstr_w(pszDir),
> + static const WCHAR prefix_start[] = {'S', 'h', 'o', 'r', 't', 'c', 'u', 't', ' ', 't', 'o', ' ', 0};
> + static const WCHAR prefix_start_nounique[] =
> + {'S', 'h', 'o', 'r', 't', 'c', 'u', 't', ' ', '(', ')', ' ', 't', 'o', ' ', 0};
> + static const WCHAR link_extension[] = {'.', 'l', 'n', 'k', 0};
> + static const WCHAR back_slash[] = {'\\',0};
> + WCHAR target[MAX_PATH];
> + WCHAR shortcut_name[MAX_PATH];
> + WCHAR file_name[MAX_PATH];
> + LPCWSTR tmp_ptr;
> + SHFILEINFOW file_info;
> + BOOL shortcut_name_updated;
> +
> + TRACE("%s, %s, %p, %p, 0x%08x - stub\n", debugstr_w(pszLinkTo), debugstr_w(pszDir),
> pszName, pfMustCopy, uFlags);
>
> - return FALSE;
> + if (pfMustCopy)
> + *pfMustCopy = FALSE;
> + else
> + return FALSE;
> +
> + if (pszLinkTo == NULL || pszName == NULL)
> + return FALSE;
> +
> + if (uFlags & SHGNLI_PIDL)
> + {
> + if (SHGetPathFromIDListW (pszLinkTo, target) == FALSE)
> + return FALSE;
> + }
> + else
> + {
> + if (lstrcpyW (target, pszLinkTo) == NULL)
> + return FALSE;
> + }
> +
> + /* Determine the file's name. */
> + tmp_ptr = strrchrW (target, '\\');
> + if (tmp_ptr != NULL)
> + tmp_ptr++;
> + else
> + tmp_ptr = target;
> +
> + lstrcpyW (file_name, tmp_ptr);
> +
> + if (uFlags & SHGNLI_NOUNIQUE)
> + tmp_ptr = prefix_start_nounique;
> + else
> + tmp_ptr = prefix_start;
> +
> + /* Begin checking against flags and generating the shortcut name. */
> + if (uFlags & SHGNLI_PREFIXNAME)
> + {
> + lstrcpyW (shortcut_name, tmp_ptr);
> + lstrcatW (shortcut_name, file_name);
> + }
> + else
> + lstrcpyW (shortcut_name, file_name);
> +
> + if ((uFlags & SHGNLI_NOLNK) == 0)
> + lstrcatW (shortcut_name, link_extension);
> +
> + /* Check if we need to generate a unique name. */
> + if (lstrcmpW (shortcut_name, file_name) == 0 && !(uFlags & (SHGNLI_NOLNK | SHGNLI_NOUNIQUE)))
> + {
> + if (confirm_link_unique (pszDir, file_name, uFlags, shortcut_name) == FALSE)
> + return FALSE;
> + }
> +
> + if (!(uFlags & SHGNLI_NOUNIQUE))
> + {
> + if (confirm_link_unique (pszDir, file_name, uFlags, shortcut_name) == FALSE)
> + return FALSE;
> + }
> +
> + if (pszDir != NULL && (uFlags & SHGNLI_NOUNIQUE) == 0)
> + {
> + lstrcpyW (pszName, pszDir);
> + lstrcatW (pszName, back_slash);
> + lstrcatW (pszName, shortcut_name);
> + }
> + else
> + lstrcpyW (pszName, shortcut_name);
> +
> + if (SHGetFileInfoW (target, 0, &file_info, sizeof(file_info), SHGFI_ATTRIBUTES))
> + {
> + if (file_info.dwAttributes & SFGAO_LINK)
> + *pfMustCopy = TRUE;
> + else
> + *pfMustCopy = FALSE;
> + }
> +
> + return TRUE;
> }
>
> HRESULT WINAPI SHStartNetConnectionDialog(HWND hwnd, LPCSTR pszRemoteName, DWORD dwType)
> diff --git a/dlls/shell32/tests/shellord.c b/dlls/shell32/tests/shellord.c
> index f5ae1bd..423ed7d 100644
> --- a/dlls/shell32/tests/shellord.c
> +++ b/dlls/shell32/tests/shellord.c
> @@ -57,7 +57,7 @@ static const getlink_test_t getlink_tests[] = {
> "testfile.lnk",
> "testfile.txt.lnk",
> TRUE,
> - TRUE,
> + FALSE,
> FALSE
> },
> {
> @@ -75,7 +75,7 @@ static const getlink_test_t getlink_tests[] = {
> "testfile.lnk",
> "testfile.txt.lnk",
> FALSE,
> - TRUE,
> + FALSE,
> FALSE
> },
> {
> @@ -84,7 +84,7 @@ static const getlink_test_t getlink_tests[] = {
> "Shortcut to testfile.lnk",
> "Shortcut to testfile.txt.lnk",
> TRUE,
> - TRUE,
> + FALSE,
> TRUE
> },
> {
> @@ -93,7 +93,7 @@ static const getlink_test_t getlink_tests[] = {
> "testfile.lnk",
> "testfile.txt (2)",
> TRUE,
> - TRUE,
> + FALSE,
> FALSE
> },
> {
> @@ -129,7 +129,7 @@ static const getlink_test_t getlink_tests[] = {
> "Shortcut () to testfile.lnk",
> "Shortcut () to testfile.txt.lnk",
> FALSE,
> - TRUE,
> + FALSE,
> FALSE
> },
> {
> @@ -138,7 +138,7 @@ static const getlink_test_t getlink_tests[] = {
> "testfile.lnk",
> "testfile.txt",
> FALSE,
> - TRUE,
> + FALSE,
> FALSE
> },
> {
> @@ -147,7 +147,7 @@ static const getlink_test_t getlink_tests[] = {
> "Shortcut to testfile.lnk",
> "Shortcut to testfile.txt",
> TRUE,
> - TRUE,
> + FALSE,
> TRUE
> },
> {
> @@ -174,7 +174,7 @@ static const getlink_test_t getlink_tests[] = {
> "Shortcut () to testfile.lnk",
> "Shortcut () to testfile.txt",
> FALSE,
> - TRUE,
> + FALSE,
> FALSE
> },
> {
> @@ -237,41 +237,38 @@ static void test_SHGetNewLinkInfo (void)
> /* Test with all NULL/0 values except for pfMustCopy */
> ret = SHGetNewLinkInfoA (NULL, NULL, NULL, &pfMustCopy, flags);
> ok (ret == FALSE, "Expected return value of FALSE.\n");
> - todo_wine ok(pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> + ok(pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
>
> /* Test with valid target, NULL shortcut directory and name buffers */
> if (test_ptr->skip_crash == FALSE)
> {
> ret = SHGetNewLinkInfoA (shortcut_ptr, NULL, NULL, &pfMustCopy, flags);
> ok (ret == FALSE, "Expected return value of FALSE.\n");
> - todo_wine ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> + ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> }
>
> /* Test with valid shortcut directory, NULL target and name buffers */
> ret = SHGetNewLinkInfoA (NULL, shortcut_dir, NULL, &pfMustCopy, flags);
> ok (ret == FALSE, "Expected return value of FALSE.\n");
> - todo_wine ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> + ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
>
> /* Test with valid shortcut name and NULL target, shortcut directory buffers */
> ret = SHGetNewLinkInfoA (NULL, NULL, shortcut_name, &pfMustCopy, flags);
> ok (ret == FALSE, "Expected return value of FALSE.\n");
> - todo_wine ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> + ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
>
> /* Test with valid shortcut directory and name, NULL shortcut target buffer */
> ret = SHGetNewLinkInfoA (NULL, shortcut_dir, shortcut_name, &pfMustCopy, flags);
> ok (ret == FALSE, "Expected return value of FALSE.\n");
> - todo_wine ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> + ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
>
> /* Test with valid shortcut target and name, NULL shortcut directory buffer */
> if (test_ptr->skip_crash == FALSE)
> {
> memset (shortcut_name, 0, MAX_PATH);
> ret = SHGetNewLinkInfoA (shortcut_ptr, NULL, shortcut_name, &pfMustCopy, flags);
> - todo_wine
> - {
> - ok (ret == TRUE, "Expected return value of TRUE.\n");
> - ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> - }
> + ok (ret == TRUE, "Expected return value of TRUE.\n");
> + ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
>
> lstrcpyA (tmp_buf1, test_ptr->expected_str_1);
> lstrcpyA (tmp_buf2, test_ptr->expected_str_2);
> @@ -299,11 +296,8 @@ static void test_SHGetNewLinkInfo (void)
> /* Test with valid shortcut directory, target, name buffers */
> memset (shortcut_name, 0, MAX_PATH);
> ret = SHGetNewLinkInfoA (shortcut_ptr, shortcut_dir, shortcut_name, &pfMustCopy, flags);
> - todo_wine
> - {
> - ok (ret == TRUE, "Expected return value of TRUE.\n");
> - ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> - }
> + ok (ret == TRUE, "Expected return value of TRUE.\n");
> + ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
>
> if (test_ptr->use_full_path == TRUE && shortcut_dir != NULL)
> {
>
>
> ------------------------------------------------------------------------
>
>
Ignore this patch, will send a fixed on in a minute.
July 2, 2008
Re: shell32: tests/shellord.c[new]: Add tests for SHGetNewLinkInfo[AW]
by Zac Brown
Zac Brown wrote:
> Add tests for SHGetNewLinkInfo[AW]
>
> Tests pass on Windows 2000, Windows XP and Windows Server 2003.
>
> Changes:
> * Add initial tests for SHGetNewLinkInfo[AW] to shell32/tests/shellord.c
> * Add shell32/tests/shellord.c
> * Update shell32/tests/Makefile.in
>
>
> ------------------------------------------------------------------------
>
> ---
> dlls/shell32/tests/Makefile.in | 1 +
> dlls/shell32/tests/shellord.c | 379 ++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 380 insertions(+), 0 deletions(-)
> create mode 100644 dlls/shell32/tests/shellord.c
>
> diff --git a/dlls/shell32/tests/Makefile.in b/dlls/shell32/tests/Makefile.in
> index 088499f..316dd72 100644
> --- a/dlls/shell32/tests/Makefile.in
> +++ b/dlls/shell32/tests/Makefile.in
> @@ -8,6 +8,7 @@ IMPORTS = uuid shell32 ole32 oleaut32 user32 advapi32 kernel32
> CTESTS = \
> generated.c \
> shelllink.c \
> + shellord.c \
> shellpath.c \
> shfldr_special.c \
> shlexec.c \
> diff --git a/dlls/shell32/tests/shellord.c b/dlls/shell32/tests/shellord.c
> new file mode 100644
> index 0000000..f5ae1bd
> --- /dev/null
> +++ b/dlls/shell32/tests/shellord.c
> @@ -0,0 +1,379 @@
> +/*
> + * Unit tests for shellord.c
> + *
> + * Copyright 2008 Google (Zac Brown)
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
> + *
> + */
> +
> +#define COBJMACROS
> +
> +#include <stdio.h>
> +
> +#include <windows.h>
> +#include "shlguid.h"
> +#include "shobjidl.h"
> +#include "shlobj.h"
> +#include "wine/test.h"
> +
> +#include "shell32_test.h"
> +
> +static BOOL (WINAPI *pSHGetNewLinkInfoA) (LPCSTR pszLinkTo,
> + LPCSTR pszDir,
> + LPSTR pszName,
> + BOOL *pfMustCopy,
> + UINT uFlags);
> +static LPITEMIDLIST (WINAPI *pSHSimpleIDListFromPath) (LPCSTR lpszPath);
> +
> +typedef struct
> +{
> + UINT flags;
> + const char* expected_str_1;
> + const char* expected_str_2;
> + const char* expected_str_3;
> + BOOL use_full_path;
> + BOOL todo_str_check;
> + BOOL skip_crash;
> +} getlink_test_t, *lp_getlink_test_t;
> +
> +
> +static const getlink_test_t getlink_tests[] = {
> + {
> + 0,
> + "testfile.lnk",
> + "testfile.lnk",
> + "testfile.txt.lnk",
> + TRUE,
> + TRUE,
> + FALSE
> + },
> + {
> + SHGNLI_PIDL,
> + "testfile.lnk",
> + "testfile.lnk",
> + "testfile.txt.lnk",
> + TRUE,
> + TRUE,
> + FALSE
> + },
> + {
> + SHGNLI_NOUNIQUE,
> + "testfile.lnk",
> + "testfile.lnk",
> + "testfile.txt.lnk",
> + FALSE,
> + TRUE,
> + FALSE
> + },
> + {
> + SHGNLI_PREFIXNAME,
> + "Shortcut to testfile.lnk",
> + "Shortcut to testfile.lnk",
> + "Shortcut to testfile.txt.lnk",
> + TRUE,
> + TRUE,
> + TRUE
> + },
> + {
> + SHGNLI_NOLNK,
> + "testfile",
> + "testfile.lnk",
> + "testfile.txt (2)",
> + TRUE,
> + TRUE,
> + FALSE
> + },
> + {
> + SHGNLI_PIDL | SHGNLI_NOUNIQUE,
> + "testfile.lnk",
> + "testfile.lnk",
> + "testfile.txt.lnk",
> + FALSE,
> + TRUE,
> + FALSE
> + },
> + {
> + SHGNLI_PIDL | SHGNLI_PREFIXNAME,
> + "Shortcut to testfile.lnk",
> + "Shortcut to testfile.lnk",
> + "Shortcut to testfile.txt.lnk",
> + TRUE,
> + TRUE,
> + TRUE
> + },
> + {
> + SHGNLI_PIDL | SHGNLI_NOLNK,
> + "testfile",
> + "testfile.lnk",
> + "testfile.txt (2)",
> + TRUE,
> + TRUE,
> + TRUE
> + },
> + {
> + SHGNLI_NOUNIQUE | SHGNLI_PREFIXNAME,
> + "Shortcut () to testfile.lnk",
> + "Shortcut () to testfile.lnk",
> + "Shortcut () to testfile.txt.lnk",
> + FALSE,
> + TRUE,
> + FALSE
> + },
> + {
> + SHGNLI_NOUNIQUE | SHGNLI_NOLNK,
> + "testfile",
> + "testfile.lnk",
> + "testfile.txt",
> + FALSE,
> + TRUE,
> + FALSE
> + },
> + {
> + SHGNLI_PREFIXNAME | SHGNLI_NOLNK,
> + "Shortcut to testfile",
> + "Shortcut to testfile.lnk",
> + "Shortcut to testfile.txt",
> + TRUE,
> + TRUE,
> + TRUE
> + },
> + {
> + SHGNLI_PIDL | SHGNLI_NOUNIQUE | SHGNLI_PREFIXNAME,
> + "Shortcut () to testfile.lnk",
> + "Shortcut () to testfile.lnk",
> + "Shortcut () to testfile.txt.lnk",
> + FALSE,
> + TRUE,
> + FALSE
> + },
> + {
> + SHGNLI_PIDL | SHGNLI_PREFIXNAME | SHGNLI_NOLNK,
> + "Shortcut to testfile",
> + "Shortcut to testfile.lnk",
> + "Shortcut to testfile.txt",
> + TRUE,
> + TRUE,
> + TRUE
> + },
> + {
> + SHGNLI_NOUNIQUE | SHGNLI_PREFIXNAME | SHGNLI_NOLNK,
> + "Shortcut () to testfile",
> + "Shortcut () to testfile.lnk",
> + "Shortcut () to testfile.txt",
> + FALSE,
> + TRUE,
> + FALSE
> + },
> + {
> + SHGNLI_PIDL | SHGNLI_NOUNIQUE | SHGNLI_PREFIXNAME | SHGNLI_NOLNK,
> + "Shortcut () to testfile",
> + "Shortcut () to testfile.lnk",
> + "Shortcut () to testfile.txt",
> + FALSE,
> + TRUE,
> + FALSE
> + }
> +};
> +
> +static void test_SHGetNewLinkInfo (void)
> +{
> + FILE *testfile_handle;
> + LPCSTR testfile_name = "testfile.txt";
> + LPSTR shortcut_pidl, shortcut_ptr;
> + CHAR shortcut_target[MAX_PATH];
> + CHAR shortcut_dir[MAX_PATH];
> + CHAR shortcut_name[MAX_PATH];
> + WCHAR shortcut_targetW[MAX_PATH];
> + UINT flags;
> + BOOL ret;
> + unsigned int index;
> + BOOL pfMustCopy;
> +
> + lp_getlink_test_t test_ptr;
> + CHAR tmp_buf1[MAX_PATH];
> + CHAR tmp_buf2[MAX_PATH];
> + CHAR tmp_buf3[MAX_PATH];
> +
> + testfile_handle = fopen (testfile_name, "w");
> + if (!testfile_handle || !GetCurrentDirectory (sizeof(shortcut_dir), shortcut_dir) ||
> + !GetFullPathName (testfile_name, sizeof(shortcut_target), shortcut_target, NULL))
> + {
> + skip ("Failed to create a test file or get the current working directory.\n");
> + goto cleanup;
> + }
> + ok (fclose(testfile_handle) == 0, "Could not close testfile.txt.\n");
> +
> + MultiByteToWideChar(CP_ACP, 0, shortcut_target, -1, shortcut_targetW, MAX_PATH);
> +
> + /* Get the PIDL of the path */
> + shortcut_pidl = (LPSTR)pSHSimpleIDListFromPath ((LPCVOID)shortcut_targetW);
> + ok (shortcut_pidl != NULL, "SHSimpleIDListFromPath failed.\n");
> + if (shortcut_pidl == NULL)
> + goto cleanup;
> +
> + for (index = 0; index < sizeof(getlink_tests)/sizeof(getlink_tests[0]); index++)
> + {
> + test_ptr = &getlink_tests[index];
> + flags = getlink_tests[index].flags;
> +
> + if (flags & SHGNLI_PIDL)
> + shortcut_ptr = shortcut_pidl;
> + else
> + shortcut_ptr = shortcut_target;
> +
> + /* Test with all NULL/0 values except for pfMustCopy */
> + ret = SHGetNewLinkInfoA (NULL, NULL, NULL, &pfMustCopy, flags);
> + ok (ret == FALSE, "Expected return value of FALSE.\n");
> + todo_wine ok(pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> +
> + /* Test with valid target, NULL shortcut directory and name buffers */
> + if (test_ptr->skip_crash == FALSE)
> + {
> + ret = SHGetNewLinkInfoA (shortcut_ptr, NULL, NULL, &pfMustCopy, flags);
> + ok (ret == FALSE, "Expected return value of FALSE.\n");
> + todo_wine ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> + }
> +
> + /* Test with valid shortcut directory, NULL target and name buffers */
> + ret = SHGetNewLinkInfoA (NULL, shortcut_dir, NULL, &pfMustCopy, flags);
> + ok (ret == FALSE, "Expected return value of FALSE.\n");
> + todo_wine ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> +
> + /* Test with valid shortcut name and NULL target, shortcut directory buffers */
> + ret = SHGetNewLinkInfoA (NULL, NULL, shortcut_name, &pfMustCopy, flags);
> + ok (ret == FALSE, "Expected return value of FALSE.\n");
> + todo_wine ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> +
> + /* Test with valid shortcut directory and name, NULL shortcut target buffer */
> + ret = SHGetNewLinkInfoA (NULL, shortcut_dir, shortcut_name, &pfMustCopy, flags);
> + ok (ret == FALSE, "Expected return value of FALSE.\n");
> + todo_wine ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> +
> + /* Test with valid shortcut target and name, NULL shortcut directory buffer */
> + if (test_ptr->skip_crash == FALSE)
> + {
> + memset (shortcut_name, 0, MAX_PATH);
> + ret = SHGetNewLinkInfoA (shortcut_ptr, NULL, shortcut_name, &pfMustCopy, flags);
> + todo_wine
> + {
> + ok (ret == TRUE, "Expected return value of TRUE.\n");
> + ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> + }
> +
> + lstrcpyA (tmp_buf1, test_ptr->expected_str_1);
> + lstrcpyA (tmp_buf2, test_ptr->expected_str_2);
> + lstrcpyA (tmp_buf3, test_ptr->expected_str_3);
> +
> + if (test_ptr->todo_str_check)
> + {
> + todo_wine
> + ok (lstrcmpA (shortcut_name, tmp_buf1) == 0 ||
> + lstrcmpA (shortcut_name, tmp_buf2) == 0 ||
> + lstrcmpA (shortcut_name, tmp_buf3) == 0,
> + "Returned shortcut did not match expected, got: %s\n",
> + shortcut_name);
> + }
> + else
> + {
> + ok (lstrcmpA (shortcut_name, tmp_buf1) == 0 ||
> + lstrcmpA (shortcut_name, tmp_buf2) == 0 ||
> + lstrcmpA (shortcut_name, tmp_buf3) == 0,
> + "Returned shortcut did not match expected, got: %s\n",
> + shortcut_name);
> + }
> + }
> +
> + /* Test with valid shortcut directory, target, name buffers */
> + memset (shortcut_name, 0, MAX_PATH);
> + ret = SHGetNewLinkInfoA (shortcut_ptr, shortcut_dir, shortcut_name, &pfMustCopy, flags);
> + todo_wine
> + {
> + ok (ret == TRUE, "Expected return value of TRUE.\n");
> + ok (pfMustCopy == FALSE, "Expected pfMustCopy to be FALSE.\n");
> + }
> +
> + if (test_ptr->use_full_path == TRUE && shortcut_dir != NULL)
> + {
> + lstrcpyA (tmp_buf1, shortcut_dir);
> + lstrcatA (tmp_buf1, "\\");
> + lstrcpyA (tmp_buf2, tmp_buf1);
> + lstrcpyA (tmp_buf3, tmp_buf1);
> +
> + lstrcatA (tmp_buf1, test_ptr->expected_str_1);
> + lstrcatA (tmp_buf2, test_ptr->expected_str_2);
> + lstrcatA (tmp_buf3, test_ptr->expected_str_3);
> + }
> + else
> + {
> + lstrcpyA (tmp_buf1, test_ptr->expected_str_1);
> + lstrcpyA (tmp_buf2, test_ptr->expected_str_2);
> + lstrcpyA (tmp_buf3, test_ptr->expected_str_3);
> + }
> +
> + if (test_ptr->todo_str_check)
> + {
> + todo_wine
> + ok (lstrcmpA (shortcut_name, tmp_buf1) == 0 ||
> + lstrcmpA (shortcut_name, tmp_buf2) == 0 ||
> + lstrcmpA (shortcut_name, tmp_buf3) == 0,
> + "Returned shortcut did not match expected, got: %s\n",
> + shortcut_name);
> + }
> + else
> + {
> + ok (lstrcmpA (shortcut_name, tmp_buf1) == 0 ||
> + lstrcmpA (shortcut_name, tmp_buf2) == 0 ||
> + lstrcmpA (shortcut_name, tmp_buf3) == 0,
> + "Returned shortcut did not match expected, got: %s\n",
> + shortcut_name);
> + }
> + }
> +
> + cleanup:
> + ret = DeleteFileA (shortcut_target);
> + ok (ret == TRUE, "Failed to delete %s\n", shortcut_target);
> +}
> +
> +
> +START_TEST(shellord)
> +{
> + HRESULT r;
> + HMODULE hmod = GetModuleHandleA("shell32.dll");
> +
> + pSHGetNewLinkInfoA = (void *) GetProcAddress(hmod, (LPSTR)179);
> + pSHSimpleIDListFromPath = (void *) GetProcAddress(hmod, (LPSTR)162);
> +
> + if (!pSHSimpleIDListFromPath)
> + {
> + skip("Unable to get process address for SHSimpleIDListFromPath.\n");
> + return;
> + }
> + if (!pSHGetNewLinkInfoA)
> + {
> + skip("Unable to get process address for SHGetNewLinkInfoA.\n");
> + return;
> + }
> +
> +
> + r = CoInitialize(NULL);
> + ok (SUCCEEDED(r), "CoInitialize failed (0x%08x)\n", r);
> + if (!SUCCEEDED(r))
> + return;
> +
> + test_SHGetNewLinkInfo();
> +
> + CoUninitialize();
> +}
>
>
> ------------------------------------------------------------------------
>
>
Ignore this patch, will resend a fixed one later.
July 2, 2008
Announcing dates and location for Wineconf 2008
by Jeremy White
Hi Folks,
Thanks to the volunteer efforts of James Ramey (new guy in our office),
we now have a great venue for WineConf 2008.
I've put together a page on it here:
http://wiki.winehq.org/WineConf2008
The key details are that it will be over the weekend of September 27 and 28,
at a hotel in Bloomington, MN. I promise that it won't be mind numbingly cold,
and I won't make any one traipse to see an ice palace this year <grin>.
In fact, it's a nice hotel, quite close to the airport, the Mall of America,
a Wildlife refuge, and to a stop for our light rail system.
Additionally, I believe we will be able to offer fairly substantial
travel sponsorships for people that find the cost of travel prohibitive.
Email me privately if that would be a help.
And for those Europeans that hate US policies, I'll point out two things:
1. January 20, 2009 is fast approaching.
2. 1 Euro gets you $1.60, which is a whole lot of cheap beer
At any rate, if you're interested in coming to Wineconf this year, please visit
the Wiki and sign up for the wineconf mailing list:
http://www.winehq.org/mailman/listinfo/wineconf
We generally use that list for minutiae to avoid spamming the broader mailing list.
Hope to see you in September!
Cheers,
Jeremy
July 2, 2008
Re: [UPDATE] shell32: Check registry entry for cpl files (in standard control panel)
by Rob Shearman
2008/7/2 Owen Rudge <owen(a)owenrudge.net>:
> This patch fixes bug #12534. It adds a check to the built-in control
> panel for any .cpl files in the registry, in addition to those .cpl
> files in the system directory.
Control Panel applets can also be registered in "HKCU\Control Panel\MMCPL".
--
Rob Shearman
July 2, 2008
Re: New valgrind warnings in msi/db
by Dan Kegel
On Wed, Jul 2, 2008 at 10:52 AM, Adam Petaccia <adam(a)tpetaccia.com> wrote:
> I don't like being able to do commit -a either, since valgrind errors
> are considered serious, should the patch be merged upstream?
Alexandre didn't like the patch for some reason earlier.
I will have a look and see if I can get rid of the need
for a patch (by e.g. adding a "don't valgrind these executables"
option to valgrind; then we can valgrind make without, um,
valgrinding make).
July 2, 2008
Re: New valgrind warnings in msi/db
by Adam Petaccia
On Wed, 2008-07-02 at 10:57 -0500, James Hawkins wrote:
> On Wed, Jul 2, 2008 at 9:40 AM, Dan Kegel <dank(a)kegel.com> wrote:
> > Hi James,
> > could you have a look at yet more fresh valgrind warnings, triggered by
> > http://source.winehq.org/git/wine.git/?a=commit;h=d9ac95be5bb51de2293326920…
> > ?
> >
> > You might want to invest in a copy of Valgrind yourself sometime.
> > I can get you a 10% off discount :-)
> >
>
> All of these new valgrind warnings that are products of my patches are
> a result of testing unimplemented features which will soon be
> implemented, so I'm not too worried about these. Besides, using
> valgrind is still a pita, and your patch makes it easier, but it keeps
> me from being able to 'commit -a'.
>
I don't like being able to do commit -a either, since valgrind errors
are considered serious, should the patch be merged upstream?
July 2, 2008