diff options
author | Samuel Rødal <samuel.rodal@nokia.com> | 2010-12-17 11:46:44 (GMT) |
---|---|---|
committer | Samuel Rødal <samuel.rodal@nokia.com> | 2010-12-22 13:47:40 (GMT) |
commit | ce432e1799111cbed492e46bb62d8dfb40585a10 (patch) | |
tree | 0175c56ec0fcd84a07e892b8deb6b52948493f48 /tests/auto/qmovie/tst_qmovie.cpp | |
parent | a562fd2d201e3b618ed99a316275f20385cc5c25 (diff) | |
download | Qt-ce432e1799111cbed492e46bb62d8dfb40585a10.zip Qt-ce432e1799111cbed492e46bb62d8dfb40585a10.tar.gz Qt-ce432e1799111cbed492e46bb62d8dfb40585a10.tar.bz2 |
Prevented infinite loop in QMoviePrivate::next().
If we're unable to read the first frame, we shouldn't return an end
marker, as that will cause QMoviePrivate::next() to recurse
indefinitely when the playCounter is set to -1 (infinite).
Reviewed-by: Olivier Goffart
Diffstat (limited to 'tests/auto/qmovie/tst_qmovie.cpp')
-rw-r--r-- | tests/auto/qmovie/tst_qmovie.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/auto/qmovie/tst_qmovie.cpp b/tests/auto/qmovie/tst_qmovie.cpp index 80a551b..d43d4cb 100644 --- a/tests/auto/qmovie/tst_qmovie.cpp +++ b/tests/auto/qmovie/tst_qmovie.cpp @@ -72,6 +72,7 @@ private slots: void jumpToFrame_data(); void jumpToFrame(); void changeMovieFile(); + void infiniteLoop(); }; // Testing get/set functions @@ -208,5 +209,17 @@ void tst_QMovie::changeMovieFile() QVERIFY(movie.currentFrameNumber() == -1); } +void tst_QMovie::infiniteLoop() +{ + QLabel label; + label.show(); + QMovie *movie = new QMovie(QLatin1String(":animations/corrupt.gif"), QByteArray(), &label); + label.setMovie(movie); + movie->start(); + + QTestEventLoop::instance().enterLoop(1); + QTestEventLoop::instance().timeout(); +} + QTEST_MAIN(tst_QMovie) #include "tst_qmovie.moc" |