Fix potential memory leaks in context2d
authorCharles Yin <charles.yin@nokia.com>
Mon, 28 May 2012 23:33:09 +0000 (09:33 +1000)
committerQt by Nokia <qt-info@nokia.com>
Tue, 29 May 2012 01:15:29 +0000 (03:15 +0200)
Change-Id: I51e75ed17fd3f12e9ba1bb7777b9f611b06b5d1d
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
src/quick/items/context2d/qquickcontext2d.cpp

index ec457fa..11a4f95 100644 (file)
@@ -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);