Re: AW: Re: LyX/Q.../Free crash

Christian Ehrlicher <[email protected]> Sun, 09 Oct 2005 19:37:14 +0200
Newsgroups gmane.comp.kde.devel.cygwin,gmane.editors.lyx.devel
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

[email protected] schrieb:
>>>src/kernel/qfontdatabase.cpp, line 913, reads
>>>
>>>  fe = loadEngine(script, fp, request, 0, 0, 0 );
>>>
>>>loadEngine() is defined in file src/kernel/qfontdatabase_win.cpp which
>>>expects a QFontFamily as fourth parameter. Within loadEngine() (line
>>>337), family->rawName.lower() is evaluated. However, we get a
>>>segmentation fault since we explicitly pass 0 as parameter.
>>>
>>
>>Angus already told me about this crash but had no time to go deeper.
>>Afais it's your fault because qfontdatabase_x11.cpp and
>>qfontdatabase_win.cpp (qt4) also don't like NULL there... but it should
>>be no problem to check for != NULL.
> 
> 
> Well, qfontdatabase.cpp, line 913, passes NULL explicitly to loadEngine. Thus, it is not LyX but Q.../Free that causes the crash. However, LyX may cause an execution path that does not occur "normally". 
> 
> Could you please check whether qfontdatabase.cpp (Qt4) also passes "0" as fourth parameter to loadEngine? Of course, we could just add a check for 0 in loadEngine and be happy but it may also have some unknown side-effects.
this is strange...

Qt4.0.1 qfontdatabase.cpp:findFont()
...
    if (fp) {
        if (fp->rawMode) {
            fe = loadEngine(script, fp, request, 0, 0, 0);
...
and qfontdatabas_win.cpp:loadEngine()
...
    if (fp->rawMode) {    // will choose a stock font
        int f, deffnt;
        <some other things>
        QString fam = family->rawName.toLower();
...

I think setting fam to "default" in case of family == 0 would be ok, but
I really don't know why it works in qt4 ... maybe I should write a
testcase trying to crash Qt4

Should be in anon cvs tomorrow, also a fix for the redraw-problem

Christian

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFDSVVKnNKwkgf+zVMRAlVaAJ9pcDXPfSYhLO3tjnJxN3MFzFXqDwCgo8p1
W5YiQ0xZoh0LoGrpuBAcl8I=
=zyxZ
-----END PGP SIGNATURE-----