On 01.06.2015 12:52, Qian Hong wrote:
Hi,
This patch fixed QQ crashing on recent Wine. Thanks Sebastian for improving my patch. Tested with wine-staging for weeks.
dlls/ntdll/om.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ dlls/ntdll/tests/om.c | 28 +++++++++++----------- server/directory.c | 5 ---- server/handle.c | 18 +++++++++++++++ server/object.h | 5 ++++ server/protocol.def | 9 ++++++++ 6 files changed, 110 insertions(+), 19 deletions(-)
if (!(status = server_get_unix_name( handle, &unix_name ))){static const WCHAR type_fileW[] = {'F','i','l','e','\0'};int type_size = sizeof(type_fileW);if (len < sizeof(*p))status = STATUS_INFO_LENGTH_MISMATCH;else if (len < sizeof(*p) + type_size)status = STATUS_BUFFER_OVERFLOW;else{p->TypeName.Buffer = (WCHAR *)(p + 1);p->TypeName.Length = type_size - sizeof(WCHAR);p->TypeName.MaximumLength = type_size;memcpy( p->TypeName.Buffer, type_fileW, type_size );}if (used_len) *used_len = sizeof(*p) + type_size;RtlFreeAnsiString( &unix_name );break;}
Why do you need a separate server call/special case for files?