[Bug 32715] LiLi USB Creator 2.8 crashes on ISO image selection (needs 'Arial' font)
WineHQ Bugzilla
wine-bugs at winehq.org
Sun Dec 29 09:44:37 CST 2019
https://bugs.winehq.org/show_bug.cgi?id=32715
Anastasius Focht <focht at gmx.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
URL|http://www.linuxliveusb.com |http://download.tuxfamily.o
| |rg/lilicreator/old-versions
| |/linuxlive/LinuxLive%20USB%
| |20Creator%202.8.29.exe
Component|-unknown |fonts
Summary|LiLi USB Creator 2.8 |LiLi USB Creator 2.8
|crashes on ISO image |crashes on ISO image
|selection |selection (needs 'Arial'
| |font)
--- Comment #5 from Anastasius Focht <focht at gmx.net> ---
Hello folks,
dupe of the many existing "missing Arial font" bug reports.
The crash/backtrace information isn't useful, it lacks the module/line number
info. Fortunately, the project provides the original .au3 files and support
scripts. One can use 'autoitv3'
(https://www.autoitscript.com/site/autoit/downloads/) to run these which gets
the following crash info:
--- snip ---
REPORTER_ID : YGBEFMPEZVFU
ERROR_MSG : "C:\Program Files (x86)\LinuxLive USB
Creator\sources\LiLi\Graphics.au3" (618) : ==> Subscript used on non-accessible
variable.:
DllStructSetData($aInfo[0], "X", Int(($bar_width - DllStructGetData($aInfo[0],
"Width")) / 2))
DllStructSetData($aInfo^ ERROR
--- snip ---
Source of the script in question:
https://github.com/royopa/lilicreator/blob/master/2.8/Graphics.au3#L606
--- snip ---
; Author(s): Prog at ndy
Func _DrawStringCenter(ByRef $hGraphic, $sString, $bar_width, $bar_height,
$FontFormat = "Arial|12|1|0xFF000000|0", $InverseStart = -1)
$FontFormat = StringSplit($FontFormat, "|")
If $InverseStart>-1 And $FontFormat[5]=1 Then
DLLCall($ghGDIPdll, "int", "GdipSetClipRectI", "ptr", $hGraphic, "int",
0, "int", 0, "int", $InverseStart, "int", $bar_height, "int", 0)
$FontFormat[4]= BitOr(0xFF000000,_InverseColor($FontFormat[4]))
EndIf
Local $hBrush = _GDIPlus_BrushCreateSolid($FontFormat[4])
Local $hFormat = _GDIPlus_StringFormatCreate(0x0400)
Local $hFamily = _GDIPlus_FontFamilyCreate($FontFormat[1])
Local $hFont = _GDIPlus_FontCreate($hFamily, $FontFormat[2],
$FontFormat[3])
Local $tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
Local $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont,
$tLayout, $hFormat)
DllStructSetData($aInfo[0], "X", Int(($bar_width -
DllStructGetData($aInfo[0], "Width")) / 2))
DllStructSetData($aInfo[0], "Y", Int(($bar_height -
DllStructGetData($aInfo[0], "Height")) / 2))
_GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $aInfo[0],
$hFormat, $hBrush)
If $InverseStart>-1 And $FontFormat[5]=1 Then DLLCall($ghGDIPdll, "int",
"GdipSetClipRectI", "ptr", $hGraphic, "int", 0, "int", 0, "int", $bar_width,
"int", $bar_height, "int", 0)
_GDIPlus_FontDispose($hFont)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_BrushDispose($hBrush)
EndFunc ;==>_DrawStringCenter
--- snip ---
Corresponding trace log with gdiplus calls:
--- snip ---
...
002d:Call gdiplus.GdipCreateSolidFill(ff000000,008bdc70) ret=00420ee9
002d:trace:gdiplus:GdipCreateSolidFill (ff000000, 008BDC70)
...
002d:trace:gdiplus:GdipCreateSolidFill <-- 0277B120
002d:Ret gdiplus.GdipCreateSolidFill() retval=00000000 ret=00420ee9
...
002d:Call gdiplus.GdipCreateStringFormat(00000400,00000000,008bdc88)
ret=00420ee9
002d:trace:gdiplus:GdipCreateStringFormat (1024, 0, 008BDC88)
...
002d:trace:gdiplus:GdipCreateStringFormat <-- 0277B268
002d:Ret gdiplus.GdipCreateStringFormat() retval=00000000 ret=00420ee9
....
002d:Call gdiplus.GdipCreateFontFamilyFromName(02d09288
L"Arial",00000000,008bdc88) ret=00420ee9
...
002d:Call gdi32.EnumFontFamiliesW(0087009b,02d09288 L"Arial",6f68ce80,008bd97c)
ret=6f68d052
...
002d:Ret gdi32.EnumFontFamiliesW() retval=00000001 ret=6f68d052
...
002d:Ret gdiplus.GdipCreateFontFamilyFromName() retval=0000000e ret=00420ee9
...
002d:Call gdiplus.GdipCreateFont(00000000,10,00000001,00000003,008bdcb8)
ret=00420ee9
002d:Ret gdiplus.GdipCreateFont() retval=00000002 ret=00420ee9
...
002d:Call gdiplus.GdipMeasureString(02826d28,02d09288
L"0%",ffffffff,00000000,02827638,0277b268,0277ba60,008bdd00,008bdd18)
ret=00420ee9
002d:trace:gdiplus:GdipMeasureString (02826D28, L"0%", -1, 00000000,
(0.00,0.00,0.00,0.00), 0277B268, 0277BA60, 008BDD00, 008BDD18)
002d:Ret gdiplus.GdipMeasureString() retval=00000002 ret=00420ee9
...
0009:Call KERNEL32.WideCharToMultiByte(0000fde9,00000000,03b1dcd0 L"2019-12-29
16:12:25 : !!!!!! Crash Detected : \"C:\\Program Files (x86)\\LinuxLive USB
Creator\\sources\\LiLi\\Graphics.au3\" (618) : ==> Subscript used on
non-accessible variable.:\r\nDllStructSetData($aInfo[0], \"X\", Int(($bar_width
- DllStructGetData($aInfo[0], \"Width\")) /
2))\r\nDl"...,00000131,00000000,00000000,00000000,00000000) ret=00463901
--- snip ---
The problem starts already when 'GdipCreateFontFamilyFromName' fails. The array
subscript problem from 'GdipMeasureString' call
(https://www.autoitscript.com/autoit3/docs/libfunctions/_GDIPlus_GraphicsMeasureString.htm)
is just a follow-up error.
'winetricks -q arial' or Wine-Staging works around as usual.
* bug 32323 ("Netflix (Silverlight 4.x) and several .NET Framework 3.x/4.0 WPF
apps require either Arial or Verdana to be installed")
* bug 32342 ("Multiple applications and games using 'Webkit' or 'Blink' web
browser engine crash on startup ('Arial' and 'Times New Roman' font face name
validation)")
* various separated app bugs mentioning 'Arial' requirement and even have other
apps duplicates linked to them, despite specific app name in title(!)
Quite messy situation.
$ sha1sum LinuxLive\ USB\ Creator\ 2.8.29.exe
1fbd22223bb5dbd88ac3d8e81231210b564d4850 LinuxLive USB Creator 2.8.29.exe
$ du -sh LinuxLive\ USB\ Creator\ 2.8.29.exe
4.8M LinuxLive USB Creator 2.8.29.exe
$ wine --version
wine-5.0-rc3
Regards
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list