Fix compiler warnings in multiple patches.

This commit is contained in:
Sebastian Lackner
2016-07-31 03:02:56 +02:00
parent 9f334d5964
commit 3ddc7bcaff
7 changed files with 95 additions and 87 deletions

View File

@@ -1,15 +1,15 @@
From eda32948987d81c0df777fbe997b2ce8eaa4cbd1 Mon Sep 17 00:00:00 2001
From 5467b7a82f16dfb7cbd6de4badcd107e7ec5f292 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 26 Feb 2016 03:54:28 +0100
Subject: mmsystem.dll16: Refcount midihdr to work around buggy application
which unprepares buffer during a callback.
---
dlls/mmsystem.dll16/message16.c | 121 ++++++++++++++++++++++++----------------
1 file changed, 73 insertions(+), 48 deletions(-)
dlls/mmsystem.dll16/message16.c | 123 ++++++++++++++++++++++++----------------
1 file changed, 74 insertions(+), 49 deletions(-)
diff --git a/dlls/mmsystem.dll16/message16.c b/dlls/mmsystem.dll16/message16.c
index 012d3dc..26e47b2 100644
index 012d3dc..2c01eb4 100644
--- a/dlls/mmsystem.dll16/message16.c
+++ b/dlls/mmsystem.dll16/message16.c
@@ -33,6 +33,13 @@
@@ -46,7 +46,7 @@ index 012d3dc..26e47b2 100644
}
break;
default:
@@ -175,41 +182,48 @@ static MMSYSTEM_MapType MMSYSTDRV_MidiOut_Map16To32W (UINT wMsg, DWORD_PTR* lpP
@@ -175,42 +182,49 @@ static MMSYSTEM_MapType MMSYSTDRV_MidiOut_Map16To32W (UINT wMsg, DWORD_PTR* lpP
break;
case MODM_PREPARE:
{
@@ -97,7 +97,16 @@ index 012d3dc..26e47b2 100644
- LPMIDIHDR mh32 = (MIDIHDR*)mh16->lpNext;
+ LPMIDIHDR16 mh16 = MapSL(*lpParam1);
+ struct mihdrWrap *mh32 = (struct mihdrWrap*)mh16->lpNext;
+
- *lpParam1 = (DWORD)mh32;
- *lpParam2 = offsetof(MIDIHDR,dwOffset);
- /* dwBufferLength can be reduced between prepare & write */
- if (wMsg == MODM_LONGDATA && mh32->dwBufferLength < mh16->dwBufferLength) {
- ERR("Size of buffer has been increased from %d to %d, keeping initial value\n",
- mh32->dwBufferLength, mh16->dwBufferLength);
- } else
- mh32->dwBufferLength = mh16->dwBufferLength;
- ret = MMSYSTEM_MAP_OKMEM;
+ mh32->ref++;
+
+ *lpParam1 = (DWORD)&mh32->hdr;
@@ -111,18 +120,11 @@ index 012d3dc..26e47b2 100644
+ }
+ else
+ mh32->hdr.dwBufferLength = mh16->dwBufferLength;
- *lpParam1 = (DWORD)mh32;
- *lpParam2 = offsetof(MIDIHDR,dwOffset);
- /* dwBufferLength can be reduced between prepare & write */
- if (wMsg == MODM_LONGDATA && mh32->dwBufferLength < mh16->dwBufferLength) {
- ERR("Size of buffer has been increased from %d to %d, keeping initial value\n",
- mh32->dwBufferLength, mh16->dwBufferLength);
- } else
- mh32->dwBufferLength = mh16->dwBufferLength;
ret = MMSYSTEM_MAP_OKMEM;
+
+ ret = MMSYSTEM_MAP_OKMEM;
}
break;
@@ -267,17 +281,28 @@ static MMSYSTEM_MapType MMSYSTDRV_MidiOut_UnMap16To32W(UINT wMsg, DWORD_PTR* lp
case MODM_UNPREPARE:
case MODM_LONGDATA:
@@ -180,5 +182,5 @@ index 012d3dc..26e47b2 100644
break;
default:
--
2.7.1
2.9.0