Merge pull request #301 from timonwong/master

Fix crashes due to deletion resources owned by QNetworkAccessManager
This commit is contained in:
chulai 2013-05-08 17:44:25 -07:00
commit 986a3e027a
2 changed files with 9 additions and 8 deletions

View file

@ -14,19 +14,19 @@ WebMultimediaDownload::WebMultimediaDownload( QUrl const & url,
void WebMultimediaDownload::cancel() void WebMultimediaDownload::cancel()
{ {
reply.reset(); reply = NULL;
finish(); finish();
} }
void WebMultimediaDownload::replyFinished( QNetworkReply * r ) void WebMultimediaDownload::replyFinished( QNetworkReply * r )
{ {
if ( r != reply.get() ) if ( !r || r != reply )
return; // Not our reply return; // Not our reply
if ( reply->error() == QNetworkReply::NoError ) if ( r->error() == QNetworkReply::NoError )
{ {
QByteArray all = reply->readAll(); QByteArray all = r->readAll();
Mutex::Lock _( dataMutex ); Mutex::Lock _( dataMutex );
@ -37,11 +37,12 @@ void WebMultimediaDownload::replyFinished( QNetworkReply * r )
hasAnyData = true; hasAnyData = true;
} }
else else
setErrorString( reply->errorString() ); setErrorString( r->errorString() );
r->deleteLater();
reply = NULL;
finish(); finish();
reply.reset();
} }
bool WebMultimediaDownload::isAudioUrl( QUrl const & url ) bool WebMultimediaDownload::isAudioUrl( QUrl const & url )

View file

@ -12,7 +12,7 @@ class WebMultimediaDownload: public DataRequest
{ {
Q_OBJECT Q_OBJECT
sptr< QNetworkReply > reply; QNetworkReply * reply;
public: public: