aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/qml/qqmljavascriptexpression.cpp9
-rw-r--r--src/qml/qml/qqmljavascriptexpression_p.h8
2 files changed, 8 insertions, 9 deletions
diff --git a/src/qml/qml/qqmljavascriptexpression.cpp b/src/qml/qml/qqmljavascriptexpression.cpp
index cd8837073a..759955f335 100644
--- a/src/qml/qml/qqmljavascriptexpression.cpp
+++ b/src/qml/qml/qqmljavascriptexpression.cpp
@@ -64,8 +64,7 @@ bool QQmlDelayedError::addError(QQmlEnginePrivate *e)
void QQmlDelayedError::setMessage(v8::Handle<v8::Message> message)
{
- qPersistentDispose(m_message);
- m_message = qPersistentNew<v8::Message>(message);
+ m_message = message.get();
}
void QQmlDelayedError::setErrorLocation(const QUrl &url, quint16 line, quint16 column)
@@ -90,9 +89,9 @@ void QQmlDelayedError::setErrorDescription(const QString &description)
*/
void QQmlDelayedError::convertMessageToError(QQmlEngine *engine) const
{
- if (!m_message.IsEmpty() && engine) {
- QQmlExpressionPrivate::exceptionToError(m_message, m_error);
- qPersistentDispose(m_message);
+ if (!!m_message && engine) {
+ QQmlExpressionPrivate::exceptionToError(v8::Handle<v8::Message>(m_message.data()), m_error);
+ m_message.reset();
}
}
diff --git a/src/qml/qml/qqmljavascriptexpression_p.h b/src/qml/qml/qqmljavascriptexpression_p.h
index 0d3b7b9063..cfdb5b0e83 100644
--- a/src/qml/qml/qqmljavascriptexpression_p.h
+++ b/src/qml/qml/qqmljavascriptexpression_p.h
@@ -65,7 +65,7 @@ class QQmlDelayedError
{
public:
inline QQmlDelayedError() : nextError(0), prevError(0) {}
- inline ~QQmlDelayedError() { qPersistentDispose(m_message); removeError(); }
+ inline ~QQmlDelayedError() { removeError(); }
bool addError(QQmlEnginePrivate *);
@@ -77,9 +77,9 @@ public:
prevError = 0;
}
- inline bool isValid() const { return !m_message.IsEmpty() || m_error.isValid(); }
+ inline bool isValid() const { return !!m_message || m_error.isValid(); }
inline const QQmlError &error(QQmlEngine *engine) const { convertMessageToError(engine); return m_error; }
- inline void clearError() { qPersistentDispose(m_message); m_error = QQmlError(); }
+ inline void clearError() { m_message.reset(); m_error = QQmlError(); }
void setMessage(v8::Handle<v8::Message> message);
void setErrorLocation(const QUrl &url, quint16 line, quint16 column);
@@ -89,7 +89,7 @@ private:
void convertMessageToError(QQmlEngine *engine) const;
mutable QQmlError m_error;
- mutable v8::Persistent<v8::Message> m_message;
+ mutable QExplicitlySharedDataPointer<v8::Message> m_message;
QQmlDelayedError *nextError;
QQmlDelayedError **prevError;