History

Don't manage _sendData's memory

Clement committed 7 years ago

Commit b2704da1 parent ec9d1372 files · +20 −33Browse files

Showing the changes to libraries/script-engine/src/XMLHttpRequestClass.cpp (1 of 2 files). Show all

Unified · Split

libraries/script-engine/src/XMLHttpRequestClass.cpp+10−23
@@ -30,30 +30,14 @@ Q_DECLARE_METATYPE(QByteArray*) · 29 unmodified lines
3030
3131 XMLHttpRequestClass::XMLHttpRequestClass(QScriptEngine* engine) :
3232 _engine(engine),
33− _async(true),
34− _url(),
35− _method(""),
36− _responseType(""),
37− _request(),
38− _reply(NULL),
39− _sendData(NULL),
40− _rawResponseData(),
41− _responseData(""),
42− _onTimeout(QScriptValue::NullValue),
43− _onReadyStateChange(QScriptValue::NullValue),
44− _readyState(XMLHttpRequestClass::UNSENT),
45− _errorCode(QNetworkReply::NoError),
46− _timeout(0),
47− _timer(this),
48− _numRedirects(0) {
33+ _timer(this) {
4934
5035 _request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
5136 _timer.setSingleShot(true);
5237 }
5338
5439 XMLHttpRequestClass::~XMLHttpRequestClass() {
55− if (_reply) { delete _reply; }
56− if (_sendData) { delete _sendData; }
40+ if (_reply) { _reply->deleteLater(); }
5741 }
5842
5943 QScriptValue XMLHttpRequestClass::constructor(QScriptContext* context, QScriptEngine* engine) {
@@ -169,13 +153,12 @@ void XMLHttpRequestClass::send() { · 109 unmodified lines
169153
170154 void XMLHttpRequestClass::send(const QScriptValue& data) {
171155 if (_readyState == OPENED && !_reply) {
156+
172157 if (!data.isNull()) {
173− _sendData = new QBuffer(this);
174158 if (data.isObject()) {
175− QByteArray ba = qscriptvalue_cast<QByteArray>(data);
176− _sendData->setData(ba);
159+ _sendData = qscriptvalue_cast<QByteArray>(data);
177160 } else {
178− _sendData->setData(data.toString().toUtf8());
161+ _sendData = data.toString().toUtf8();
179162 }
180163 }
181164
@@ -235,6 +218,10 @@ void XMLHttpRequestClass::requestFinished() { · 53 unmodified lines
235218 }
236219 }
237220
221+ disconnectFromReply(_reply);
222+ _reply->deleteLater();
223+ _reply = nullptr;
224+
238225 setReadyState(DONE);
239226 emit requestComplete();
240227 }
@@ -246,7 +233,7 @@ void XMLHttpRequestClass::abortRequest() { · 5 unmodified lines
246233 disconnectFromReply(_reply);
247234 _reply->abort();
248235 _reply->deleteLater();
249− _reply = NULL;
236+ _reply = nullptr;
250237 }
251238 }
252239