aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/context2d
diff options
context:
space:
mode:
authorCharles Yin <charles.yin@nokia.com>2012-05-29 09:33:09 +1000
committerQt by Nokia <qt-info@nokia.com>2012-05-29 03:15:29 +0200
commit58f474c1e2d97a695876c0e1bb0461eb39dadebf (patch)
treed81e049f140282b3da667e784197395da7cd3ed0 /src/quick/items/context2d
parentd4b2f0eec8e328818973c1852c19fc7ef45efb5f (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.cpp16
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);