From 498373d326981015a8878acf482c217be468a44b Mon Sep 17 00:00:00 2001 From: cracyc Date: Thu, 24 Mar 2022 16:55:51 -0500 Subject: [PATCH 1/2] treat forward slash as a pathspec and truncate biheight in wing to an int16 --- krnl386/file.c | 2 +- wing/wing.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/krnl386/file.c b/krnl386/file.c index 58238a89983..06bac8bb7e7 100644 --- a/krnl386/file.c +++ b/krnl386/file.c @@ -1397,7 +1397,7 @@ static void RedirectPrivateProfileStringWindowsDir(LPCSTR filename, LPCSTR outpu { if (!filename) filename = "win.ini"; - if (PathIsFileSpecA(filename)) + if (PathIsFileSpecA(filename) && !strchr(filename, '/')) { PathCombineA(output, GetRedirectWindowsDir(), filename); } diff --git a/wing/wing.c b/wing/wing.c index 35aed5aea19..73c69092fad 100644 --- a/wing/wing.c +++ b/wing/wing.c @@ -176,6 +176,12 @@ HBITMAP16 WINAPI WinGCreateBitmap16(HDC16 hdc, BITMAPINFO *bmpi, SEGPTR *bits) { LPVOID bits32; HBITMAP hbitmap; + LONG oldheight = bmpi->bmiHeader.biHeight; + DWORD oldsize = bmpi->bmiHeader.biSizeImage; + bmpi->bmiHeader.biSizeImage = 0; + + if ((oldheight >= 32768) && (oldheight < 65536)) + bmpi->bmiHeader.biHeight = (INT16)(oldheight & 0xffff); TRACE("(%d,%p,%p): create %dx%dx%d bitmap\n", hdc, bmpi, bits, bmpi->bmiHeader.biWidth, bmpi->bmiHeader.biHeight, bmpi->bmiHeader.biPlanes); @@ -186,6 +192,8 @@ HBITMAP16 WINAPI WinGCreateBitmap16(HDC16 hdc, BITMAPINFO *bmpi, SEGPTR *bits) SEGPTR segptr = alloc_segptr_bits( hbitmap, bits32, (bmpi->bmiHeader.biHeight < 0) ); if (bits) *bits = segptr; } + bmpi->bmiHeader.biHeight = oldheight; + bmpi->bmiHeader.biSizeImage = oldsize; return HBITMAP_16(hbitmap); } From 8d73c0c9f01440ef989519a9745d0cde7e3640ad Mon Sep 17 00:00:00 2001 From: cracyc Date: Thu, 24 Mar 2022 17:00:05 -0500 Subject: [PATCH 2/2] truncate unconditionally --- wing/wing.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wing/wing.c b/wing/wing.c index 73c69092fad..b37c9a8b5fe 100644 --- a/wing/wing.c +++ b/wing/wing.c @@ -180,7 +180,7 @@ HBITMAP16 WINAPI WinGCreateBitmap16(HDC16 hdc, BITMAPINFO *bmpi, SEGPTR *bits) DWORD oldsize = bmpi->bmiHeader.biSizeImage; bmpi->bmiHeader.biSizeImage = 0; - if ((oldheight >= 32768) && (oldheight < 65536)) + if (oldheight >= 32768) bmpi->bmiHeader.biHeight = (INT16)(oldheight & 0xffff); TRACE("(%d,%p,%p): create %dx%dx%d bitmap\n", hdc, bmpi, bits,