From fea87f9a231579aae37acf08d4b8642e9839cb3b Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Fri, 26 Apr 2019 09:42:11 +1000 Subject: [PATCH] Rebase against 85826158947637f790b68742a5448c483f47234f --- ...y-convert-result-of-AVIStreamGetFram.patch | 183 ------------------ ...between-AVISTREAMINFO-16-bit-and-AVI.patch | 149 -------------- .../definition | 2 - .../0059-kernel32-tests-Zigzag-test.patch | 17 +- patches/patchinstall.sh | 20 +- ...-a-new-alloc_handle-object-callback..patch | 80 ++++---- 6 files changed, 50 insertions(+), 401 deletions(-) delete mode 100644 patches/avifile.dll16-AVIStreamGetFrame/0001-avifile-Correctly-convert-result-of-AVIStreamGetFram.patch delete mode 100644 patches/avifile.dll16-AVIStreamGetFrame/0002-avifile-Convert-between-AVISTREAMINFO-16-bit-and-AVI.patch delete mode 100644 patches/avifile.dll16-AVIStreamGetFrame/definition diff --git a/patches/avifile.dll16-AVIStreamGetFrame/0001-avifile-Correctly-convert-result-of-AVIStreamGetFram.patch b/patches/avifile.dll16-AVIStreamGetFrame/0001-avifile-Correctly-convert-result-of-AVIStreamGetFram.patch deleted file mode 100644 index f015597b..00000000 --- a/patches/avifile.dll16-AVIStreamGetFrame/0001-avifile-Correctly-convert-result-of-AVIStreamGetFram.patch +++ /dev/null @@ -1,183 +0,0 @@ -From ef9a368177cf6f1a1ca7f99fd3ae0b8b6918160a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Mon, 8 Feb 2016 04:44:24 +0100 -Subject: avifile.dll16: Correctly convert result of AVIStreamGetFrame to a - segptr. - ---- - dlls/avifile.dll16/Makefile.in | 3 + - dlls/avifile.dll16/avifile.dll16.spec | 6 +- - dlls/avifile.dll16/main.c | 133 ++++++++++++++++++++++++++++++++++ - 3 files changed, 139 insertions(+), 3 deletions(-) - create mode 100644 dlls/avifile.dll16/main.c - -diff --git a/dlls/avifile.dll16/Makefile.in b/dlls/avifile.dll16/Makefile.in -index 6050c6c..4152c2f 100644 ---- a/dlls/avifile.dll16/Makefile.in -+++ b/dlls/avifile.dll16/Makefile.in -@@ -1,3 +1,6 @@ - MODULE = avifile.dll16 - IMPORTS = avifil32 - EXTRADLLFLAGS = -m16 -Wb,--main-module,avifil32.dll -+ -+C_SRCS = \ -+ main.c -diff --git a/dlls/avifile.dll16/avifile.dll16.spec b/dlls/avifile.dll16/avifile.dll16.spec -index 71a6c74..0e19413 100644 ---- a/dlls/avifile.dll16/avifile.dll16.spec -+++ b/dlls/avifile.dll16/avifile.dll16.spec -@@ -20,9 +20,9 @@ - 105 stub AVIMAKECOMPRESSEDSTREAM - 106 stub AVIMAKEFILEFROMSTREAMS - 107 stub AVIMAKESTREAMFROMCLIPBOARD --110 pascal AVIStreamGetFrame(long long) AVIStreamGetFrame --111 pascal AVIStreamGetFrameClose(long) AVIStreamGetFrameClose --112 pascal AVIStreamGetFrameOpen(long ptr) AVIStreamGetFrameOpen -+110 pascal AVIStreamGetFrame(long long) AVIStreamGetFrame16 -+111 pascal AVIStreamGetFrameClose(long) AVIStreamGetFrameClose16 -+112 pascal AVIStreamGetFrameOpen(long ptr) AVIStreamGetFrameOpen16 - 120 stub _AVISAVE - 121 stub AVISAVEV - 122 stub AVISAVEOPTIONS -diff --git a/dlls/avifile.dll16/main.c b/dlls/avifile.dll16/main.c -new file mode 100644 -index 0000000..9e1faac ---- /dev/null -+++ b/dlls/avifile.dll16/main.c -@@ -0,0 +1,133 @@ -+/* -+ * Wrapper for 16 bit avifile functions -+ * -+ * Copyright 2016 Michael Müller -+ * -+ * 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 -+ */ -+ -+#include "wine/winbase16.h" -+#include "winternl.h" -+#include "wingdi.h" -+#include "vfw.h" -+ -+struct frame_wrapper16 -+{ -+ PGETFRAME pg; -+ PVOID ptr; -+ DWORD size; -+ WORD sel; -+ WORD count; -+}; -+ -+static void free_segptr_frame(struct frame_wrapper16 *wrapper) -+{ -+ int i; -+ -+ if (!wrapper->sel) -+ return; -+ -+ for (i = 0; i < wrapper->count; i++) -+ FreeSelector16(wrapper->sel + (i << __AHSHIFT)); -+ -+ wrapper->sel = 0; -+} -+ -+static SEGPTR alloc_segptr_frame(struct frame_wrapper16 *wrapper, void *ptr, DWORD size) -+{ -+ int i; -+ -+ if (wrapper->sel) -+ { -+ if (wrapper->ptr == ptr && wrapper->size == size) -+ return MAKESEGPTR(wrapper->sel, 0); -+ free_segptr_frame(wrapper); -+ } -+ -+ wrapper->ptr = ptr; -+ wrapper->size = size; -+ wrapper->count = (size + 0xffff) / 0x10000; -+ wrapper->sel = AllocSelectorArray16(wrapper->count); -+ if (!wrapper->sel) -+ return 0; -+ -+ for (i = 0; i < wrapper->count; i++) -+ { -+ SetSelectorBase(wrapper->sel + (i << __AHSHIFT), (DWORD)ptr + i * 0x10000); -+ SetSelectorLimit16(wrapper->sel + (i << __AHSHIFT), size - 1); -+ size -= 0x10000; -+ } -+ -+ return MAKESEGPTR(wrapper->sel, 0); -+} -+ -+/*********************************************************************** -+ * AVIStreamGetFrameOpen (AVIFILE.112) -+ */ -+PGETFRAME WINAPI AVIStreamGetFrameOpen16(PAVISTREAM pstream, LPBITMAPINFOHEADER lpbiWanted) -+{ -+ struct frame_wrapper16 *wrapper; -+ PGETFRAME pg; -+ -+ pg = AVIStreamGetFrameOpen(pstream, lpbiWanted); -+ if (!pg) return NULL; -+ -+ wrapper = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*wrapper)); -+ if (!wrapper) -+ { -+ AVIStreamGetFrameClose(pg); -+ return NULL; -+ } -+ -+ wrapper->pg = pg; -+ return (PGETFRAME)wrapper; -+} -+ -+/*********************************************************************** -+ * AVIStreamGetFrame (AVIFILE.110) -+ */ -+SEGPTR WINAPI AVIStreamGetFrame16(PGETFRAME pg, LONG pos) -+{ -+ struct frame_wrapper16 *wrapper = (void *)pg; -+ BITMAPINFOHEADER *bih; -+ -+ if (!pg) return 0; -+ -+ bih = AVIStreamGetFrame(wrapper->pg, pos); -+ if (bih) -+ { -+ DWORD size = bih->biSize + bih->biSizeImage; -+ return alloc_segptr_frame(wrapper, bih, size); -+ } -+ -+ return 0; -+} -+ -+ -+/*********************************************************************** -+ * AVIStreamGetFrameClose (AVIFILE.111) -+ */ -+HRESULT WINAPI AVIStreamGetFrameClose16(PGETFRAME pg) -+{ -+ struct frame_wrapper16 *wrapper = (void *)pg; -+ HRESULT hr; -+ -+ if (!pg) return S_OK; -+ -+ hr = AVIStreamGetFrameClose(wrapper->pg); -+ free_segptr_frame(wrapper); -+ HeapFree(GetProcessHeap(), 0, wrapper); -+ return hr; -+} --- -2.9.0 - diff --git a/patches/avifile.dll16-AVIStreamGetFrame/0002-avifile-Convert-between-AVISTREAMINFO-16-bit-and-AVI.patch b/patches/avifile.dll16-AVIStreamGetFrame/0002-avifile-Convert-between-AVISTREAMINFO-16-bit-and-AVI.patch deleted file mode 100644 index d545e3ff..00000000 --- a/patches/avifile.dll16-AVIStreamGetFrame/0002-avifile-Convert-between-AVISTREAMINFO-16-bit-and-AVI.patch +++ /dev/null @@ -1,149 +0,0 @@ -From b64fdb26c0d998e97f8d4d5193108d92bd0ee0dc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20M=C3=BCller?= -Date: Mon, 8 Feb 2016 14:02:09 +0100 -Subject: avifile.dll16: Convert between AVISTREAMINFO (16 bit) and - AVISTREAMINFOA. - ---- - dlls/avifile.dll16/avifile.dll16.spec | 4 +- - dlls/avifile.dll16/main.c | 100 ++++++++++++++++++++++++++++++++++ - 2 files changed, 102 insertions(+), 2 deletions(-) - -diff --git a/dlls/avifile.dll16/avifile.dll16.spec b/dlls/avifile.dll16/avifile.dll16.spec -index 0e19413..7a1aaea 100644 ---- a/dlls/avifile.dll16/avifile.dll16.spec -+++ b/dlls/avifile.dll16/avifile.dll16.spec -@@ -36,13 +36,13 @@ - 141 pascal AVIFileRelease(long) AVIFileRelease - 142 pascal AVIFileInfo(long ptr long) AVIFileInfoA - 143 pascal AVIFileGetStream(long ptr long long) AVIFileGetStream --144 pascal AVIFileCreateStream(long ptr ptr) AVIFileCreateStreamA -+144 pascal AVIFileCreateStream(long ptr ptr) AVIFileCreateStream16 - 146 pascal AVIFileWriteData(long long ptr long) AVIFileWriteData - 147 pascal AVIFileReadData(long long ptr ptr) AVIFileReadData - 148 pascal AVIFileEndRecord(long) AVIFileEndRecord - 160 pascal AVIStreamAddRef(long) AVIStreamAddRef - 161 pascal AVIStreamRelease(long) AVIStreamRelease --162 pascal AVIStreamInfo(long ptr long) AVIStreamInfoA -+162 pascal AVIStreamInfo(long ptr long) AVIStreamInfo16 - 163 pascal AVIStreamFindSample(long long long) AVIStreamFindSample - 164 pascal AVIStreamReadFormat(long long ptr ptr) AVIStreamReadFormat - 165 pascal AVIStreamReadData(long long ptr ptr) AVIStreamReadData -diff --git a/dlls/avifile.dll16/main.c b/dlls/avifile.dll16/main.c -index 9e1faac..8bb1769 100644 ---- a/dlls/avifile.dll16/main.c -+++ b/dlls/avifile.dll16/main.c -@@ -23,6 +23,27 @@ - #include "wingdi.h" - #include "vfw.h" - -+typedef struct _AVISTREAMINFO16 { -+ DWORD fccType; -+ DWORD fccHandler; -+ DWORD dwFlags; -+ DWORD dwCaps; -+ WORD wPriority; -+ WORD wLanguage; -+ DWORD dwScale; -+ DWORD dwRate; -+ DWORD dwStart; -+ DWORD dwLength; -+ DWORD dwInitialFrames; -+ DWORD dwSuggestedBufferSize; -+ DWORD dwQuality; -+ DWORD dwSampleSize; -+ RECT16 rcFrame; -+ DWORD dwEditCount; -+ DWORD dwFormatChangeCount; -+ CHAR szName[64]; -+} AVISTREAMINFO16, *LPAVISTREAMINFO16, *PAVISTREAMINFO16; -+ - struct frame_wrapper16 - { - PGETFRAME pg; -@@ -131,3 +152,82 @@ HRESULT WINAPI AVIStreamGetFrameClose16(PGETFRAME pg) - HeapFree(GetProcessHeap(), 0, wrapper); - return hr; - } -+ -+/*********************************************************************** -+ * AVIFileCreateStream (AVIFILE.144) -+ */ -+HRESULT WINAPI AVIFileCreateStream16(PAVIFILE pfile, PAVISTREAM *ppavi, LPAVISTREAMINFO16 asi16) -+{ -+ AVISTREAMINFOA asi; -+ -+ if (!asi16) -+ return AVIFileCreateStreamA(pfile, ppavi, NULL); -+ -+ asi.fccType = asi16->fccType; -+ asi.fccHandler = asi16->fccHandler; -+ asi.dwFlags = asi16->dwFlags; -+ asi.dwCaps = asi16->dwCaps; -+ asi.wPriority = asi16->wPriority; -+ asi.wLanguage = asi16->wLanguage; -+ asi.dwScale = asi16->dwScale; -+ asi.dwRate = asi16->dwRate; -+ asi.dwStart = asi16->dwStart; -+ asi.dwLength = asi16->dwLength; -+ asi.dwInitialFrames = asi16->dwInitialFrames; -+ asi.dwSuggestedBufferSize = asi16->dwSuggestedBufferSize; -+ asi.dwQuality = asi16->dwQuality; -+ asi.dwSampleSize = asi16->dwSampleSize; -+ asi.rcFrame.left = asi16->rcFrame.left; -+ asi.rcFrame.top = asi16->rcFrame.top; -+ asi.rcFrame.right = asi16->rcFrame.right; -+ asi.rcFrame.bottom = asi16->rcFrame.bottom; -+ asi.dwEditCount = asi16->dwEditCount; -+ asi.dwFormatChangeCount = asi16->dwFormatChangeCount; -+ memcpy(&asi.szName, &asi16->szName, sizeof(asi.szName)); -+ -+ return AVIFileCreateStreamA(pfile, ppavi, &asi); -+} -+ -+ -+/*********************************************************************** -+ * AVIStreamInfo (AVIFILE.162) -+ */ -+HRESULT WINAPI AVIStreamInfo16(PAVISTREAM pstream, LPAVISTREAMINFO16 asi16, LONG size) -+{ -+ AVISTREAMINFOA asi; -+ HRESULT hr; -+ -+ if (!asi16) -+ return AVIStreamInfoA(pstream, NULL, size); -+ -+ if (size < sizeof(AVISTREAMINFO16)) -+ return AVIERR_BADSIZE; -+ -+ hr = AVIStreamInfoA(pstream, &asi, sizeof(asi)); -+ if (SUCCEEDED(hr)) -+ { -+ asi16->fccType = asi.fccType; -+ asi16->fccHandler = asi.fccHandler; -+ asi16->dwFlags = asi.dwFlags; -+ asi16->dwCaps = asi.dwCaps; -+ asi16->wPriority = asi.wPriority; -+ asi16->wLanguage = asi.wLanguage; -+ asi16->dwScale = asi.dwScale; -+ asi16->dwRate = asi.dwRate; -+ asi16->dwStart = asi.dwStart; -+ asi16->dwLength = asi.dwLength; -+ asi16->dwInitialFrames = asi.dwInitialFrames; -+ asi16->dwSuggestedBufferSize = asi.dwSuggestedBufferSize; -+ asi16->dwQuality = asi.dwQuality; -+ asi16->dwSampleSize = asi.dwSampleSize; -+ asi16->rcFrame.left = asi.rcFrame.left; -+ asi16->rcFrame.top = asi.rcFrame.top; -+ asi16->rcFrame.right = asi.rcFrame.right; -+ asi16->rcFrame.bottom = asi.rcFrame.bottom; -+ asi16->dwEditCount = asi.dwEditCount; -+ asi16->dwFormatChangeCount = asi.dwFormatChangeCount; -+ memcpy(&asi16->szName, &asi.szName, sizeof(asi.szName)); -+ } -+ -+ return hr; -+} --- -2.9.0 - diff --git a/patches/avifile.dll16-AVIStreamGetFrame/definition b/patches/avifile.dll16-AVIStreamGetFrame/definition deleted file mode 100644 index c4ca8eee..00000000 --- a/patches/avifile.dll16-AVIStreamGetFrame/definition +++ /dev/null @@ -1,2 +0,0 @@ -Fixes: Correctly convert result of AVIStreamGetFrame to a segptr in avifile.dll16 -Fixes: Convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA in avifile.dll16 diff --git a/patches/eventfd_synchronization/0059-kernel32-tests-Zigzag-test.patch b/patches/eventfd_synchronization/0059-kernel32-tests-Zigzag-test.patch index deceb6af..51c41c6d 100644 --- a/patches/eventfd_synchronization/0059-kernel32-tests-Zigzag-test.patch +++ b/patches/eventfd_synchronization/0059-kernel32-tests-Zigzag-test.patch @@ -1,19 +1,19 @@ -From 05b8d4c26a8b73a782d5f88de09a7db351af012d Mon Sep 17 00:00:00 2001 +From 8546a498af3b79503e310f80d132abe6b4b49670 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Tue, 26 Jun 2018 18:44:44 -0500 -Subject: [PATCH 59/83] kernel32/tests: Zigzag test. +Subject: [PATCH] kernel32/tests: Zigzag test. The primary function is to check for races. The secondary function is to measure performance. --- - dlls/kernel32/tests/sync.c | 79 ++++++++++++++++++++++++++++++++++++++ + dlls/kernel32/tests/sync.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c -index c79e0595e..d790bcfa0 100644 +index 66ec3af..5960e92 100644 --- a/dlls/kernel32/tests/sync.c +++ b/dlls/kernel32/tests/sync.c -@@ -3005,6 +3005,84 @@ static void test_apc_deadlock(void) - CloseHandle(pi.hProcess); +@@ -3025,6 +3025,84 @@ todo_wine + DeleteCriticalSection(&cs); } +static int zigzag_state, zigzag_count[2], zigzag_stop; @@ -97,12 +97,13 @@ index c79e0595e..d790bcfa0 100644 START_TEST(sync) { char **argv; -@@ -3064,4 +3142,5 @@ START_TEST(sync) +@@ -3084,5 +3162,6 @@ START_TEST(sync) test_srwlock_example(); test_alertable_wait(); test_apc_deadlock(); + test_zigzag_event(); + test_crit_section(); } -- -2.20.1 +1.9.1 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 98847bbe..abe70601 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "9b6d198a3c7c8a02aa69c0d3d11829712e9778a6" + echo "85826158947637f790b68742a5448c483f47234f" } # Show version information @@ -94,7 +94,6 @@ patch_enable_all () enable_api_ms_win_Stub_DLLs="$1" enable_atl_AtlAxDialogBox="$1" enable_avifil32_IGetFrame_fnSetFormat="$1" - enable_avifile_dll16_AVIStreamGetFrame="$1" enable_bcrypt_BCryptSecretAgreement="$1" enable_combase_GetRestrictedErrorInfo="$1" enable_comctl32_Listview_DrawItem="$1" @@ -419,9 +418,6 @@ patch_enable () avifil32-IGetFrame_fnSetFormat) enable_avifil32_IGetFrame_fnSetFormat="$2" ;; - avifile.dll16-AVIStreamGetFrame) - enable_avifile_dll16_AVIStreamGetFrame="$2" - ;; bcrypt-BCryptSecretAgreement) enable_bcrypt_BCryptSecretAgreement="$2" ;; @@ -2315,20 +2311,6 @@ if test "$enable_avifil32_IGetFrame_fnSetFormat" -eq 1; then ) >> "$patchlist" fi -# Patchset avifile.dll16-AVIStreamGetFrame -# | -# | Modified files: -# | * dlls/avifile.dll16/Makefile.in, dlls/avifile.dll16/avifile.dll16.spec, dlls/avifile.dll16/main.c -# | -if test "$enable_avifile_dll16_AVIStreamGetFrame" -eq 1; then - patch_apply avifile.dll16-AVIStreamGetFrame/0001-avifile-Correctly-convert-result-of-AVIStreamGetFram.patch - patch_apply avifile.dll16-AVIStreamGetFrame/0002-avifile-Convert-between-AVISTREAMINFO-16-bit-and-AVI.patch - ( - printf '%s\n' '+ { "Michael Müller", "avifile.dll16: Correctly convert result of AVIStreamGetFrame to a segptr.", 1 },'; - printf '%s\n' '+ { "Michael Müller", "avifile.dll16: Convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA.", 1 },'; - ) >> "$patchlist" -fi - # Patchset bcrypt-BCryptSecretAgreement # | # | This patchset fixes the following Wine bugs: diff --git a/patches/server-Desktop_Refcount/0001-server-Introduce-a-new-alloc_handle-object-callback..patch b/patches/server-Desktop_Refcount/0001-server-Introduce-a-new-alloc_handle-object-callback..patch index 09f222da..5441c030 100644 --- a/patches/server-Desktop_Refcount/0001-server-Introduce-a-new-alloc_handle-object-callback..patch +++ b/patches/server-Desktop_Refcount/0001-server-Introduce-a-new-alloc_handle-object-callback..patch @@ -1,4 +1,4 @@ -From 45aa42a648dce6c80d269ff51e7350782fd50ae0 Mon Sep 17 00:00:00 2001 +From dd64d40615a77f0588cc6a5608d098ca6ba724d6 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Fri, 4 Dec 2015 10:36:47 +0100 Subject: [PATCH] server: Introduce a new alloc_handle object callback. (v2) @@ -44,7 +44,7 @@ Signed-off-by: Sebastian Lackner 36 files changed, 79 insertions(+), 5 deletions(-) diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h -index 9e26aa4fb..973f6dfe1 100644 +index 9e26aa4..973f6df 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -6677,6 +6677,6 @@ union generic_reply @@ -56,7 +56,7 @@ index 9e26aa4fb..973f6dfe1 100644 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/async.c b/server/async.c -index 75989e5d3..b5aff667e 100644 +index 75989e5..b5aff66 100644 --- a/server/async.c +++ b/server/async.c @@ -81,6 +81,7 @@ static const struct object_ops async_ops = @@ -76,7 +76,7 @@ index 75989e5d3..b5aff667e 100644 iosb_destroy /* destroy */ }; diff --git a/server/atom.c b/server/atom.c -index 11b7ac532..e27b6f460 100644 +index 11b7ac5..e27b6f4 100644 --- a/server/atom.c +++ b/server/atom.c @@ -92,6 +92,7 @@ static const struct object_ops atom_table_ops = @@ -88,7 +88,7 @@ index 11b7ac532..e27b6f460 100644 atom_table_destroy /* destroy */ }; diff --git a/server/change.c b/server/change.c -index 2be6a8360..dee48ce9f 100644 +index 9f07be7..1c38431 100644 --- a/server/change.c +++ b/server/change.c @@ -127,6 +127,7 @@ static const struct object_ops dir_ops = @@ -100,7 +100,7 @@ index 2be6a8360..dee48ce9f 100644 dir_destroy /* destroy */ }; diff --git a/server/clipboard.c b/server/clipboard.c -index 673aabbd0..588875439 100644 +index 673aabb..5888754 100644 --- a/server/clipboard.c +++ b/server/clipboard.c @@ -89,6 +89,7 @@ static const struct object_ops clipboard_ops = @@ -112,7 +112,7 @@ index 673aabbd0..588875439 100644 clipboard_destroy /* destroy */ }; diff --git a/server/completion.c b/server/completion.c -index 1a074c801..c0d2ccfcb 100644 +index 1a074c8..c0d2ccf 100644 --- a/server/completion.c +++ b/server/completion.c @@ -77,6 +77,7 @@ static const struct object_ops completion_ops = @@ -124,7 +124,7 @@ index 1a074c801..c0d2ccfcb 100644 completion_destroy /* destroy */ }; diff --git a/server/console.c b/server/console.c -index c32270855..f437e7475 100644 +index c322708..f437e74 100644 --- a/server/console.c +++ b/server/console.c @@ -90,6 +90,7 @@ static const struct object_ops console_input_ops = @@ -152,7 +152,7 @@ index c32270855..f437e7475 100644 screen_buffer_destroy /* destroy */ }; diff --git a/server/debugger.c b/server/debugger.c -index 9a29ef41f..1c68ee03e 100644 +index 9a29ef4..1c68ee0 100644 --- a/server/debugger.c +++ b/server/debugger.c @@ -86,6 +86,7 @@ static const struct object_ops debug_event_ops = @@ -172,7 +172,7 @@ index 9a29ef41f..1c68ee03e 100644 debug_ctx_destroy /* destroy */ }; diff --git a/server/device.c b/server/device.c -index 8340cb103..6573bd44c 100644 +index 5eff624..54fe311 100644 --- a/server/device.c +++ b/server/device.c @@ -79,6 +79,7 @@ static const struct object_ops irp_call_ops = @@ -199,16 +199,16 @@ index 8340cb103..6573bd44c 100644 no_close_handle, /* close_handle */ device_destroy /* destroy */ }; -@@ -211,6 +214,7 @@ static const struct object_ops device_file_ops = +@@ -213,6 +216,7 @@ static const struct object_ops device_file_ops = NULL, /* unlink_name */ no_open_file, /* open_file */ - no_kernel_obj_list, /* get_kernel_obj_list */ + device_file_get_kernel_obj_list, /* get_kernel_obj_list */ + no_alloc_handle, /* alloc_handle */ device_file_close_handle, /* close_handle */ device_file_destroy /* destroy */ }; diff --git a/server/directory.c b/server/directory.c -index 55cbad328..1ab0c7335 100644 +index 55cbad3..1ab0c73 100644 --- a/server/directory.c +++ b/server/directory.c @@ -69,6 +69,7 @@ static const struct object_ops object_type_ops = @@ -228,7 +228,7 @@ index 55cbad328..1ab0c7335 100644 directory_destroy /* destroy */ }; diff --git a/server/esync.c b/server/esync.c -index 4521993d4..dfdf6a7ed 100644 +index 4521993..dfdf6a7 100644 --- a/server/esync.c +++ b/server/esync.c @@ -138,6 +138,7 @@ const struct object_ops esync_ops = @@ -240,7 +240,7 @@ index 4521993d4..dfdf6a7ed 100644 esync_destroy /* destroy */ }; diff --git a/server/event.c b/server/event.c -index 79287e7ed..ad8fddbfa 100644 +index 79287e7..ad8fddb 100644 --- a/server/event.c +++ b/server/event.c @@ -76,6 +76,7 @@ static const struct object_ops event_ops = @@ -260,7 +260,7 @@ index 79287e7ed..ad8fddbfa 100644 no_destroy /* destroy */ }; diff --git a/server/fd.c b/server/fd.c -index 95f289718..c158fefb8 100644 +index 2a38780..e628cdb 100644 --- a/server/fd.c +++ b/server/fd.c @@ -222,6 +222,7 @@ static const struct object_ops fd_ops = @@ -296,7 +296,7 @@ index 95f289718..c158fefb8 100644 no_destroy /* destroy */ }; diff --git a/server/file.c b/server/file.c -index 25aa6bcbc..b6c7b95d2 100644 +index 3ce7307..fa96ca7 100644 --- a/server/file.c +++ b/server/file.c @@ -98,6 +98,7 @@ static const struct object_ops file_ops = @@ -308,7 +308,7 @@ index 25aa6bcbc..b6c7b95d2 100644 file_destroy /* destroy */ }; diff --git a/server/handle.c b/server/handle.c -index 6ca4489a8..879098aee 100644 +index 6ca4489..879098a 100644 --- a/server/handle.c +++ b/server/handle.c @@ -135,6 +135,7 @@ static const struct object_ops handle_table_ops = @@ -353,7 +353,7 @@ index 6ca4489a8..879098aee 100644 } } diff --git a/server/hook.c b/server/hook.c -index f5d7639fd..22b148289 100644 +index f5d7639..22b1482 100644 --- a/server/hook.c +++ b/server/hook.c @@ -93,6 +93,7 @@ static const struct object_ops hook_table_ops = @@ -365,7 +365,7 @@ index f5d7639fd..22b148289 100644 hook_table_destroy /* destroy */ }; diff --git a/server/mailslot.c b/server/mailslot.c -index fc1caa9e0..57d07751d 100644 +index fc1caa9..57d0775 100644 --- a/server/mailslot.c +++ b/server/mailslot.c @@ -91,6 +91,7 @@ static const struct object_ops mailslot_ops = @@ -393,7 +393,7 @@ index fc1caa9e0..57d07751d 100644 mailslot_device_destroy /* destroy */ }; diff --git a/server/mapping.c b/server/mapping.c -index aab89ee43..0bc6a555b 100644 +index 1b3df08..819181a 100644 --- a/server/mapping.c +++ b/server/mapping.c @@ -103,6 +103,7 @@ static const struct object_ops ranges_ops = @@ -421,7 +421,7 @@ index aab89ee43..0bc6a555b 100644 mapping_destroy /* destroy */ }; diff --git a/server/mutex.c b/server/mutex.c -index f5f969b3d..a4ab6bdb3 100644 +index f5f969b..a4ab6bd 100644 --- a/server/mutex.c +++ b/server/mutex.c @@ -73,6 +73,7 @@ static const struct object_ops mutex_ops = @@ -433,7 +433,7 @@ index f5f969b3d..a4ab6bdb3 100644 mutex_destroy /* destroy */ }; diff --git a/server/named_pipe.c b/server/named_pipe.c -index ceb9894ba..6892081d3 100644 +index ceb9894..6892081 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -130,6 +130,7 @@ static const struct object_ops named_pipe_ops = @@ -479,7 +479,7 @@ index ceb9894ba..6892081d3 100644 named_pipe_device_file_destroy /* destroy */ }; diff --git a/server/object.c b/server/object.c -index 048da504a..fbac8f75a 100644 +index 048da50..fbac8f7 100644 --- a/server/object.c +++ b/server/object.c @@ -693,6 +693,10 @@ struct object *no_open_file( struct object *obj, unsigned int access, unsigned i @@ -494,7 +494,7 @@ index 048da504a..fbac8f75a 100644 { return 1; /* ok to close */ diff --git a/server/object.h b/server/object.h -index ca5a191f9..d913e6553 100644 +index ca5a191..d913e65 100644 --- a/server/object.h +++ b/server/object.h @@ -93,8 +93,10 @@ struct object_ops @@ -518,7 +518,7 @@ index ca5a191f9..d913e6553 100644 extern void no_destroy( struct object *obj ); #ifdef DEBUG_OBJECTS diff --git a/server/process.c b/server/process.c -index 15c99cd53..e6568eceb 100644 +index 69b8189..5d1249e 100644 --- a/server/process.c +++ b/server/process.c @@ -91,6 +91,7 @@ static const struct object_ops process_ops = @@ -546,7 +546,7 @@ index 15c99cd53..e6568eceb 100644 job_destroy /* destroy */ }; diff --git a/server/queue.c b/server/queue.c -index 56fa4d98c..b5d0677fd 100644 +index 56fa4d9..b5d0677 100644 --- a/server/queue.c +++ b/server/queue.c @@ -194,6 +194,7 @@ static const struct object_ops msg_queue_ops = @@ -566,7 +566,7 @@ index 56fa4d98c..b5d0677fd 100644 thread_input_destroy /* destroy */ }; diff --git a/server/registry.c b/server/registry.c -index 1757fd3b3..e56134e16 100644 +index 1757fd3..e56134e 100644 --- a/server/registry.c +++ b/server/registry.c @@ -172,6 +172,7 @@ static const struct object_ops key_ops = @@ -578,7 +578,7 @@ index 1757fd3b3..e56134e16 100644 key_destroy /* destroy */ }; diff --git a/server/request.c b/server/request.c -index 73878cf23..f089ccc2d 100644 +index 73878cf..f089ccc 100644 --- a/server/request.c +++ b/server/request.c @@ -109,6 +109,7 @@ static const struct object_ops master_socket_ops = @@ -590,7 +590,7 @@ index 73878cf23..f089ccc2d 100644 master_socket_destroy /* destroy */ }; diff --git a/server/semaphore.c b/server/semaphore.c -index 36e3e79e5..191387185 100644 +index 36e3e79..1913871 100644 --- a/server/semaphore.c +++ b/server/semaphore.c @@ -70,6 +70,7 @@ static const struct object_ops semaphore_ops = @@ -602,7 +602,7 @@ index 36e3e79e5..191387185 100644 no_destroy /* destroy */ }; diff --git a/server/serial.c b/server/serial.c -index 2848e1dc7..966b8bc6b 100644 +index 2848e1d..966b8bc 100644 --- a/server/serial.c +++ b/server/serial.c @@ -104,6 +104,7 @@ static const struct object_ops serial_ops = @@ -614,7 +614,7 @@ index 2848e1dc7..966b8bc6b 100644 serial_destroy /* destroy */ }; diff --git a/server/signal.c b/server/signal.c -index ca200394f..a2e0efef1 100644 +index ca20039..a2e0efe 100644 --- a/server/signal.c +++ b/server/signal.c @@ -79,6 +79,7 @@ static const struct object_ops handler_ops = @@ -626,7 +626,7 @@ index ca200394f..a2e0efef1 100644 handler_destroy /* destroy */ }; diff --git a/server/snapshot.c b/server/snapshot.c -index 7d0d742ee..2ad9d5d78 100644 +index 7d0d742..2ad9d5d 100644 --- a/server/snapshot.c +++ b/server/snapshot.c @@ -73,6 +73,7 @@ static const struct object_ops snapshot_ops = @@ -638,7 +638,7 @@ index 7d0d742ee..2ad9d5d78 100644 snapshot_destroy /* destroy */ }; diff --git a/server/sock.c b/server/sock.c -index ac830812d..d373768c9 100644 +index ac83081..d373768 100644 --- a/server/sock.c +++ b/server/sock.c @@ -156,6 +156,7 @@ static const struct object_ops sock_ops = @@ -658,7 +658,7 @@ index ac830812d..d373768c9 100644 ifchange_destroy /* destroy */ }; diff --git a/server/symlink.c b/server/symlink.c -index 6b66b23dd..52387be1e 100644 +index 6b66b23..52387be 100644 --- a/server/symlink.c +++ b/server/symlink.c @@ -72,6 +72,7 @@ static const struct object_ops symlink_ops = @@ -670,7 +670,7 @@ index 6b66b23dd..52387be1e 100644 symlink_destroy /* destroy */ }; diff --git a/server/thread.c b/server/thread.c -index 8c4541993..bcb852666 100644 +index 8c45419..bcb8526 100644 --- a/server/thread.c +++ b/server/thread.c @@ -123,6 +123,7 @@ static const struct object_ops thread_apc_ops = @@ -690,7 +690,7 @@ index 8c4541993..bcb852666 100644 destroy_thread /* destroy */ }; diff --git a/server/timer.c b/server/timer.c -index f2403fc9b..75d289cac 100644 +index f2403fc..75d289c 100644 --- a/server/timer.c +++ b/server/timer.c @@ -80,6 +80,7 @@ static const struct object_ops timer_ops = @@ -702,7 +702,7 @@ index f2403fc9b..75d289cac 100644 timer_destroy /* destroy */ }; diff --git a/server/token.c b/server/token.c -index 139161f9d..62e3f8d15 100644 +index 1a41ad0..71f8552 100644 --- a/server/token.c +++ b/server/token.c @@ -164,6 +164,7 @@ static const struct object_ops token_ops = @@ -714,7 +714,7 @@ index 139161f9d..62e3f8d15 100644 token_destroy /* destroy */ }; diff --git a/server/winstation.c b/server/winstation.c -index 845043b20..d7e8a5c80 100644 +index 845043b..d7e8a5c 100644 --- a/server/winstation.c +++ b/server/winstation.c @@ -77,6 +77,7 @@ static const struct object_ops winstation_ops = @@ -734,5 +734,5 @@ index 845043b20..d7e8a5c80 100644 desktop_destroy /* destroy */ }; -- -2.21.0 +1.9.1