Commit graph

31 commits

Author SHA1 Message Date
Joachim Henze 96db0cd726 [0.4.9][NTGDI] Check if face->charmap is not zero before accessing its encoding (#4390)
Prevents a BSOD 0x1E upon dereference.
CORE-18091 CORE-18558

By partially porting back:
0.4.15-dev-5587-ga999c43 a999c43746
and take also some cosmetic changes from master head, like EOL-whitespace-removal.
2023-01-21 15:01:29 +01:00
Joachim Henze c9ddd05570 [0.4.9][NTGDI] Commit minimized Flip_Fix_9.patch
flip_fix_9.patch fixes:
CORE-16984 " 'SPINA Thrulg' / 'SPINA Thyr' / 'Sim Thyr' have images flipped"
CORE-17194 "StretchDIBits test" isn't work correctly"
           "Output of 'Project 3 Test'"
CORE-14701 "DVDStyler 3.0.4 transparent toolbars"
CORE-14701 "DVDStyler 3.0.4 erroneously black around icons of welcome-dlg"
CORE-14671 "'Peazip' shows icons in buttons and menubar vertically flipped"
           "Double Commander shoes icons flipped in buttons, menubar, listview and the treeview"
CORE-13273 "Welcome to Lazarus" icon shows flipped
CORE-13026 "'CudaText app' icon shows flipped"
CORE-18653 The dibobj.c part also fixes a BSOD 0x1E nullptr deref in Win32K when running the setup of 'Auslogics Disk Defrag Pro 4.9.4.0' in releases/0.4.7 to releases/0.4.13

Not all of those are duplicates, although they appear to be at first glance.
It affects different controls and some of those tickets do have different 'guilty revs' than others.

The patch does consist of 2 parts:

1.) win32ss/gdi/ntgdi/dibobj.c
This one is the most clean part of it, that addresses most of the flipping issues now, and the BSOD 0x1E.

2.) The hack in comctl32.h redefining the version:
We used that in the past to appease some, but not all of the issues listed above.
But it does hide additional issues, e.g. in DvDStyler, therefore we seem to still need that appeasement even today.
Most likely it would make sense to aim to avoid this part in the future.
part 2.) was committed as first appeasement on its own already into
0.4.14-RC-24-g 198b61e
0.4.13-RC-7-g 67211fa
0.4.12-RC-5-g 8449527
0.4.11-RC-16-g b906163
0.4.10-RC-7-g f1e80fe
0.4.9-RC-34-g 9d758ae
Interestingly this part is not needed for releases/0.4.7.
It became necessary for all newer releases with the COMCTL32 Winesyncs during 0.4.8-dev' and 0.4.9-dev'ing and their massive button.c-changes.

We also created a summary of manual test-results:
https://jira.reactos.org/browse/CORE-17415?focusedCommentId=126668&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-126668

If you read this comment via git blame and your goal is to get rid of the hack in comctl32.h, I would highly recommend
to redo the tests of that testing table, and if that is asked too much, then please test at least the following cases:
CORE-14701 "DVDStyler 3.0.4 transparent toolbars"
CORE-14701 "DVDStyler 3.0.4 erroneously black around icons of welcome-dlg"
           "DVDStyler 3.0.4 erroneously black/transparent within comboboxes of properties of VMGM menu"
and try to add what might be needed to fix them, and double-check again:
           "DoubleCommander optionsDlg the most complex testcase, contains flip-prone icons in treeview, listview, menubar, buttons, statics". Only some of its flipped icons were impacted by the comctl32.h change before.

fix is a squashed pick from
0.4.15-dev-1603-g 232c45fcd7
0.4.15-dev-5396-g 9c5bb096bc [COMCTL32] partial revert of the upper commit
2022-11-22 16:20:37 +01:00
Joachim Henze 10b4abf5a8 [0.4.9][WIN32SS] Fix RLE4 bitmap decoding (#1188) CORE-10553
fix picked from 0.4.12-dev-189-g 968c8f37f1

It fixes:
CORE-10553 'WinRar SFX have corrupted image'
CORE-11399 'Microsoft paint (from XPSP3) does not show bitmaps on the tools'

Please note, that MS mspaint.exe does not start in all older rls-branches yet for unrelated reasons,
it did start and render properly in releases/0.4.11, but does not start in releases/0.4.7 yet.
Still I marked the ticket CORE-11399 as resolved in all of them as that has nothing to do with the RLE stuff.
The WinRAR SFX worked properly in all of them.
2022-10-26 11:45:14 +02:00
Joachim Henze cc27dfd4bc [0.4.9][NTGDI] 'otm' is always non-NULL in epilogue CORE-16993
is a small optimization picked from 0.4.14-dev-108-g 1bf982ff88
otm is checked for NULL already a few lines before in that function, and is not touched
anymore in between the two locations. Tiny bit shorter+smaller now,
and might satisfy also some static code-analysis.
The origin of checking it twice for NULL dates back into the pre-0.4.7-era of ros.
2022-10-10 02:34:14 +02:00
Joachim Henze af3e03aeef [0.4.9][WIN32K] Revert NtGdiStretchDIBitsInternal to Previous Logic (#3774)
Fixes gdi32:dib / gdi32:bitmap tests and

CORE-16236 "SIMS graphics", which regressed by
SVN 51005 == git 2bbd8711a7

Thanks to the patches author Doug Lyons.

It also fixed
CORE-16621 Kompozer 0.7.10 from rapps, exe does not show an icon, but does on 2k3sp2

fix picked from 0.4.15-dev-2850-g 847b037fe9
--------------
By taking the above, we also have to pick its addendum
[WIN32K] Fix 'use after free' in NtGdiStretchDIBitsInternal #4122 CORE-17861

0.4.15-dev-3420-g b538b9abb8
to avoid introducing another bug:
CORE-17861 MS Visual Studio 2010 Pro Fatal System Error 0x00000050
--------------
[WIN32K] Don't trust the BITMAPINFOHEADER size

This is not entirely correct yet, but less wrong than before and fixes
CORE-16031 Moo0 Audio Recorder - ReactOS icons are not displayed in the system tray
fix picked from 0.4.14-dev-848-g 53c9a6deaa
2022-01-15 01:30:38 +01:00
Joachim Henze e2de354688 [0.4.9][WIN32K] Revert incorrect part of R50928 for RealizePalette. (#3678)
Revert part of SVN R50928 that causes Durak card suites to have wrong colors.
SVN r50928 == git 5de8339cd1

JIRA issue: CORE-13748 <= Durak Example
JIRA issue: CORE-16510 <= GDIProg Example

The idea was picked from 0.4.15-dev-2735-g c7954134d0
but I was too shy to port the recurrently spamming and slowing DPRINT1 back that far.
Spamming on master should be enough to improve here later.
2022-01-12 06:01:01 +01:00
Joachim Henze 33ebdeff91 [0.4.9][NTGDI] Fix potential BSOD 0x1E CORE-17626
in CreateDIBPalette() when passing invalid arguments to CreateDIBSection.
This could be triggered by using the broken test-application "GDIProg".

After this patch not only the BSOD is fixed but also the app does
properly start up, like it is the case on 2k3sp2.

The problem was unhidden by the innocent and unrelated 0.4.12-dev-266-g 8ab3652c01
I was not able to trigger the bug in releases older than 0.4.12,
but it is rather obvious that the mentioned revision is not really 'guilty', which
is why I will port the fix back further into releases even older than 0.4.12 as well.

Thanks to the patches author Doug Lyons.

a squashed port of:
0.4.15-dev-2734-g 514147776a (fixes the BSOD)
0.4.15-dev-2775-g c596fd3ef6 (improvement #3758)
0.4.15-dev-2776-g 4130f0b1c5 (compilation fix)
and some white-space tweaking that was committed after those.
2021-11-15 12:08:14 +01:00
Joachim Henze 9be0765be1 [0.4.9][WIN32SS] Fix regression CORE-15558 Font enumeration
Fixes CORE-15558 "AbiWord font listbox should display a specific font only once, but displays each of them many times instead"
which regressed by SVN r75491 == 0.4.7-dev-32-g d10c0ec112

by porting back the commits:
0.4.12-dev-320-g 6e4e5a004c
and
0.4.13-dev-107-g ae8417fd90 to prevent introducing another regression CORE_15785 with the initial fix.
and some more addendums to prevent introducing regression CORE_15755

I verified afterwards that all 3 issues: CORE-15558, CORE_15785 and CORE_15755 are in fixed state.

Actually I don't really like the resulting code due to the qsort() that it introduces into
win32ss/gdi/gdi32/objects/font.c
We did not need that at all before 0.4.7-dev-32-g d10c0ec112
In case that qsort() would ever reveal any new trouble like reduced performance or stack overflow,
we should structurally revert all that context to 0.4.7-dev-31 instead.
IntEnumFontFamilies() is called immediately upon process initialization for many applications and the qsorted-list is *huge*,
so this indeed could be relevant for performance.
2020-12-31 22:10:01 +01:00
Joachim Henze 1667ebbb22 [0.4.9][WIN32SS] Fix assert with Winamp 5.666 CORE-10774
Fixes CORE-10774 "Winamp asserts upon startup when Bentoo skin is selected"

Reference:
Alexandre Julliard : Ignore empty rectangles in ExtCreateRegion.
8ac61c5a1e

fix picked from 0.4.12-dev-979-g 2f5c0ee0a9
2020-12-11 04:06:30 +01:00
Joachim Henze 7c969a1e23 [0.4.9][WIN32SS] Fix BSOD CORE-15433 and repeatedly hit assert CORE-14755
CORE-15433 "Fix assertless BSOD when Opera 12.18 browses duckduckgo.com"
fix ported from 0.4.12-dev-20-g 43e2089 (I ported it back earlier into 0.4.11-RC-7-g 7d0eadd already)

CORE-14775 Allow NULL, Fix repeatedly hit assert when Opera 12.18 browses www.palemoon.org style_name==NULL
by taking parts only of the fix from 0.4.10-dev-284-g ae8762e . I left the verbosed debug-prints aside, as that is not performance-neutral.

They are both related. Actually style_name == NULL is ok, that assert was not correct.
but some of the code was just not handling it properly and dereferenced it.
2020-12-11 01:05:58 +01:00
Mark Jansen 55da9b9c07 [0.4.9][FONT][WIN32SS] Include the style name in the registry key CORE-14044
CORE-14044 Symptom "Installing MS Tahoma did not longer replace Tahoma.ttf, just Tahomabd.ttf"

It regressed by SVN r73900 == git
d5f4f99b0e

Thanks to Doug Lyons for pinpointing the issue.

fix picked from commit 0.4.11-dev-311-g
3d44f79e3e
2020-11-13 14:20:22 +01:00
Joachim Henze 763e08ed5e [0.4.9][WIN32SS:NTGDI] Fix missing text in labels and buttons for .NET apps.
Fixes CORE-15000 "Totally Broken/messed up text in many .NET applications"
and its duplicates
CORE-14679 "Missing fonts in Reg Organizer 8.16"
CORE-15398 "Messed fonts in Microsoft SQL Server 2005 Express Edition"
CORE-15611 "Word 2003: Organization Chart has corrupted display"

There was a missing break statement in ftGdiGetGlyphOutline().
Found by JIRA contributor 'I_Kill_Bugs' :-)

Add also brackets around 'case's to make code navigation easier.

Fix picked from 0.4.12-dev-865-g
0e56ec8892
2020-11-03 14:17:07 +01:00
Joachim Henze e8cc477de5 [0.4.9][WIN32K:ENG] Fix fullscreen switch regressions CORE-15325 & CORE-14684 PR#1659
In PDEVOBJ_vRefreshModeList, find a proper match for the current
display mode instead of assuming a constant index.

Both tickets CORE-15325 & CORE-14684 regressed by SVN r74404
384affe098

fix cherry picked from commit 0.4.13-dev-456-g
00e882c2b1
Many thanks to the patches author Thomas Faber.

With this commit we sync PDEVOBJ_vRefreshModeList() to the state I used in 0.4.12rls and 0.4.13rls.

This patch does fix:
- regression CORE-15325 "Pocket Tanks 1.6 not filling the whole screen because it does not switch its resolution when coming from desktop res 1024x768 32bpp"
- regression CORE-14684 "Fall 0.1.3 opens just a white window instead of content when started with desktop resolution 1024x768 32bpp"
- regression "Globulation 2 0.9.4.4 not filling the whole screen when configured to use fullscreen and running it from desktop resolution 1024x768 32bpp"

but also helps to fix the last app that was still affected by CORE-14363 "systray icons do flash through now when an app is running in fullscreen".
CORE-14363 actually was fixed for >95% of the apps already by my last commit into the releases, but there was an outlier that does require Thomas patch additionally, that was:
- "Pengupop 2.2.3 when being run from desktop with 1024x768 32 bpp"

I committed it beforehand:
- for master:    0.4.13-dev-456-g00e882c
- for 0.4.12rls: 0.4.12-RC-34-gec3cc13
- for 0.4.11rls: 0.4.11-release-4-g11e0b0b
- for 0.4.10rls: 0.4.10-release-6-g58f9e1e
2020-10-08 17:53:51 +02:00
Timo Kreuzer 2d9c88e0c5
[WIN32K] Fix 64 bit issues (#420)
- Fix ULONG/SIZE_T issues
- Use LOWORD/HIWORD
- Change a struct member to HANDLE
- Implement lstrlenW helper function
2018-03-18 15:53:52 +01:00
Mark Jansen 428e4617e9
[WIN32K] Do not try to compare a long name against a truncated name.
This fixes gdiplus_winetest:font crashing.
ROSTESTS-154
2018-03-15 20:16:04 +01:00
Mark Jansen 37a34a21a9
[WIN32K] Do not truncate localized font names.
ROSTESTS-154
2018-03-15 20:16:04 +01:00
Thomas Faber 862b82f3fa
[WIN32K:NTGDI] Fix more uses of RtlCreateUnicodeString. CORE-14271
Addendum to 7f687154a0. Spotted by Hermès.
2018-01-31 12:35:30 +01:00
Thomas Faber 7f687154a0
[WIN32K:NTGDI] Correctly interpret RtlCreateUnicodeString return value. CORE-14271 2018-01-31 10:38:06 +01:00
Joachim Henze 79d392c53c [WIN32K] revert PR173 to fix regressions in Chrome/Chromium CORE-14170
This reverts ea4daf8b68 committed 2017-12-09 to master, the commit was named
"[WIN32K] Fix NtGdiGetTextFaceW to report face name correctly (#173)",
reverting got ack of khmz,
reopening less severe CORE-14071 accordingly
2018-01-07 17:58:47 +01:00
Timo Kreuzer 456e2192b7 [WIN32K] Check for empty output rect in GreGradientFill
Fixes a failed ASSERT.
CORE-14148 #resolve
2017-12-28 10:46:01 +01:00
Katayama Hirofumi MZ 10910ca9e1 [GDI32] Fix TextOutA multibyte text length overgoing. CORE-14070 2017-12-17 02:04:31 +01:00
Katayama Hirofumi MZ ea4daf8b68 [WIN32K] Fix NtGdiGetTextFaceW to report face name correctly (#173)
Initialize TEXTOBJ.FaceName member in TextIntRealizeFont and use it in NtGdiGetTextFaceW 
CORE-14071
2017-12-09 12:06:51 +02:00
James Tabor e1e79f248b [GDI] Fix metafile crashes and null driver issues.
Patch by Jérôme Gardou modified by me.
CORE-14023 : Fix SetWorldTransform for metafiles #137
Includes CORE-12832 and CORE-13627.
2017-11-26 14:48:06 -06:00
jimtabor d85023c9c9 [GDI] - Add type for setting world transform modification modes.
References:
https://msdn.microsoft.com/en-us/library/cc230538.aspx
https://github.com/KDE/krita/blob/master/libs/vectorimage/libemf/EmfEnums.h
2017-11-24 17:22:43 -06:00
Giannis Adamopoulos febf9acfee [GDI32] GdiDrawStream: Improve handling of small rcDest sizes
- Abort drawing if rcDest has negative height or width.
- Ignore sizing margins if rcDest is too small.
CORE-13513
2017-11-22 17:28:18 +02:00
Jérôme Gardou 89dbc88a2c [WIN32SS]
- Unconditionally enter NtUser implementation in EngCreateWnd and EngDeleteWnd
CORE-7727
2017-11-18 12:15:45 +01:00
Jérôme Gardou 3e1a54151f [WIN32SS]
- Do not call the driver Escape routine while holding locks on GDI objects
CORE-7727
2017-11-18 12:15:45 +01:00
Amine Khaldi 5cb0615147 [BROWSEUI][DEVMGR][EXPLORER][NTGDI][NTOBJSHEX][NTVDM][SETUPAPI] Remove/comment out some unused variables. CORE-11799 (#94) 2017-10-28 15:04:18 +01:00
Katayama Hirofumi MZ 85ae842105 [WIN32SS] fix font extent.
CORE-13840
2017-10-25 21:10:35 +02:00
jimtabor 31aab36e88 [Win32SS]
- Merge path objects with gdi path structure. See CORE-13536.
2017-10-06 11:54:27 -05:00
Colin Finck c2c66aff7d Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00