Rebase against 85826158947637f790b68742a5448c483f47234f

This commit is contained in:
Alistair Leslie-Hughes 2019-04-26 09:42:11 +10:00
parent f883c66e40
commit fea87f9a23
6 changed files with 50 additions and 401 deletions

View File

@ -1,183 +0,0 @@
From ef9a368177cf6f1a1ca7f99fd3ae0b8b6918160a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
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

View File

@ -1,149 +0,0 @@
From b64fdb26c0d998e97f8d4d5193108d92bd0ee0dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
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

View File

@ -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

View File

@ -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 <z.figura12@gmail.com>
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

View File

@ -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:

View File

@ -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 <sebastian@fds-team.de>
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 <sebastian@fds-team.de>
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