diff options
author | Charles Yin <charles.yin@nokia.com> | 2012-05-29 09:33:09 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-29 03:15:29 +0200 |
commit | 58f474c1e2d97a695876c0e1bb0461eb39dadebf (patch) | |
tree | d81e049f140282b3da667e784197395da7cd3ed0 /src/quick/items/context2d | |
parent | d4b2f0eec8e328818973c1852c19fc7ef45efb5f (diff) |
Fix potential memory leaks in context2d
Change-Id: I51e75ed17fd3f12e9ba1bb7777b9f611b06b5d1d
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
Diffstat (limited to 'src/quick/items/context2d')
-rw-r--r-- | src/quick/items/context2d/qquickcontext2d.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp index ec457fa242..11a4f95e42 100644 --- a/src/quick/items/context2d/qquickcontext2d.cpp +++ b/src/quick/items/context2d/qquickcontext2d.cpp @@ -1014,8 +1014,10 @@ static v8::Handle<v8::Value> ctx2d_createLinearGradient(const v8::Arguments &arg if (!qIsFinite(x0) || !qIsFinite(y0) || !qIsFinite(x1) - || !qIsFinite(y1)) + || !qIsFinite(y1)) { + delete r; V8THROW_DOM(DOMEXCEPTION_NOT_SUPPORTED_ERR, "createLinearGradient(): Incorrect arguments") + } r->brush = QLinearGradient(x0, y0, x1, y1); gradient->SetExternalResource(r); @@ -1063,8 +1065,10 @@ static v8::Handle<v8::Value> ctx2d_createRadialGradient(const v8::Arguments &arg || !qIsFinite(x1) || !qIsFinite(r0) || !qIsFinite(r1) - || !qIsFinite(y1)) + || !qIsFinite(y1)) { + delete r; V8THROW_DOM(DOMEXCEPTION_NOT_SUPPORTED_ERR, "createRadialGradient(): Incorrect arguments") + } if (r0 < 0 || r1 < 0) V8THROW_DOM(DOMEXCEPTION_INDEX_SIZE_ERR, "createRadialGradient(): Incorrect arguments") @@ -1107,11 +1111,15 @@ static v8::Handle<v8::Value> ctx2d_createConicalGradient(const v8::Arguments &ar qreal x = args[0]->NumberValue(); qreal y = args[1]->NumberValue(); qreal angle = DEGREES(args[2]->NumberValue()); - if (!qIsFinite(x) || !qIsFinite(y)) + if (!qIsFinite(x) || !qIsFinite(y)) { + delete r; V8THROW_DOM(DOMEXCEPTION_NOT_SUPPORTED_ERR, "createConicalGradient(): Incorrect arguments"); + } - if (!qIsFinite(angle)) + if (!qIsFinite(angle)) { + delete r; V8THROW_DOM(DOMEXCEPTION_INDEX_SIZE_ERR, "createConicalGradient(): Incorrect arguments"); + } r->brush = QConicalGradient(x, y, angle); gradient->SetExternalResource(r); |