04.02.2015, 13:12, "Martin Koller" <[email protected]>: > I've found a very strange (and serious) miscompilation of QImage with g++ > > In qimage.cpp there is a simple line (3584 in Qt-5.3.2): > d->paintEngine = paintEngine ? paintEngine : new > QRasterPaintEngine(paintDevice); > which results in 0(!). The return value of this method QImage::paintEngine() > is then 0 - > which should never happen. > > I can reproduce with a slightly modified "minimal" platform plugin, and only > if it has > a second QImage member, which gets its mImage member assigned. > > I have created a very small reproducible example program and I verified that > this only > happens when compiling QtGui with gcc (4.8.3 or 4.9.0), but it does not > happen with clang (3.5.0). > > All tests are done on x86/64bit Linux (openSuse 13.2) with a self-compiled > Qt5.3.2 (with a namespace, in debug mode). > I also see the problem compiled with gcc-4.8.2 in release mode compiled on a > CentOS-7 > > Testprogram/diff attached. > Simply run with ./splash -platform minimal and in case of the bug it prints: > created new QImage paint engine 0x0 > returning QImage paint engine 0x0 > QWidget::paintEngine: Should no longer be called > QPainter::begin: Paint device returned engine == 0, type: 1 > QPainter::setPen: Painter not active > > Can anyone please tell me if you can reproduce this ? > Is this really a gcc bug ? > Shall I create a gcc bug report with this example/description or is this much > too large for > a testcase ?
You might want try to reproduce it with different compiler (e.g., different version of gcc, or clang). If it reprocudes, folow these instructions: https://gcc.gnu.org/wiki/A_guide_to_testcase_reduction -- Regards, Konstantin _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
