Module: wine
Branch: master
Commit: f832f85c80ef69f182790a9183d50d53826cac85
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f832f85c80ef69f182790a918…
Author: Austin English <austinenglish(a)gmail.com>
Date: Tue May 19 21:28:18 2015 -0500
dbghelp: Ignore some more symbol ids.
These are from MSVC 2013.
---
dlls/dbghelp/msc.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c
index 3b12a3a..1554414 100644
--- a/dlls/dbghelp/msc.c
+++ b/dlls/dbghelp/msc.c
@@ -1992,6 +1992,12 @@ static BOOL codeview_snarf(const struct msc_debug_info* msc_dbg, const BYTE* roo
case 0x1142:
case 0x1143:
case 0x1144:
+ case 0x114c:
+ case 0x114d:
+ case 0x114e:
+ case 0x1145:
+ case 0x115a:
+ case 0x1153:
TRACE("Unsupported symbol id %x\n", sym->generic.id);
break;
Module: wine
Branch: master
Commit: 2f0febe60a9f0b29840fc8d60679a8585b788ad5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2f0febe60a9f0b29840fc8d60…
Author: Matteo Bruni <mbruni(a)codeweavers.com>
Date: Tue May 19 23:32:34 2015 +0200
ntdll: Ignore positive matches in read_directory_stat() for case-insensitive filesystems.
It's necessary to return the actual filename with correct casing and a
plain stat doesn't allow that. Make read_directory_stat() return the
result of the stat() call on a case-insensitive filesystem only when the
file is missing.
---
dlls/ntdll/directory.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
index 81b5c2e..455fbc6 100644
--- a/dlls/ntdll/directory.c
+++ b/dlls/ntdll/directory.c
@@ -2065,8 +2065,9 @@ static int read_directory_stat( int fd, IO_STATUS_BLOCK *io, void *buffer, ULONG
int unix_len, ret, used_default;
char *unix_name;
struct stat st;
+ BOOL case_sensitive = get_dir_case_sensitivity(".");
- TRACE("trying optimisation for file %s\n", debugstr_us( mask ));
+ TRACE("looking up file %s\n", debugstr_us( mask ));
unix_len = ntdll_wcstoumbs( 0, mask->Buffer, mask->Length / sizeof(WCHAR), NULL, 0, NULL, NULL );
if (!(unix_name = RtlAllocateHeap( GetProcessHeap(), 0, unix_len + 1)))
@@ -2091,7 +2092,7 @@ static int read_directory_stat( int fd, IO_STATUS_BLOCK *io, void *buffer, ULONG
}
ret = stat( unix_name, &st );
- if (!ret)
+ if (case_sensitive && !ret)
{
union file_directory_info *info = append_entry( buffer, io, length, unix_name, NULL, NULL, class );
if (info)
@@ -2101,6 +2102,19 @@ static int read_directory_stat( int fd, IO_STATUS_BLOCK *io, void *buffer, ULONG
}
else io->u.Status = STATUS_NO_MORE_FILES;
}
+ else if (!case_sensitive && ret && (errno == ENOENT || errno == ENOTDIR))
+ {
+ /* If the file does not exist, return that info.
+ * If the file DOES exist, return failure and fallback to the next
+ * read_directory_* function (we need to return the case-preserved
+ * filename stored on the filesystem). */
+ ret = 0;
+ io->u.Status = STATUS_NO_MORE_FILES;
+ }
+ else
+ {
+ ret = -1;
+ }
}
else ret = -1;