diff --git a/src/context3d.cpp b/src/context3d.cpp
index 6d351cccae6d8326468ccfe3d6bbe98464695892..45aef2c61e5d2acd709fb97e326eade2337d4340 100644
--- a/src/context3d.cpp
+++ b/src/context3d.cpp
@@ -2786,6 +2786,9 @@ void CanvasContext::uniform1fva(CanvasUniformLocation *location, QVariantList ar
                                 << "(location:" << location
                                 << ", array:" << array
                                 << ")";
+    if (!location)
+        return;
+
     float *arrayData = new float[array.length()];
     ArrayUtils::fillFloatArrayFromVariantList(array, arrayData);
     glUniform1fv(location->id(), array.count(), arrayData);
@@ -2805,6 +2808,9 @@ void CanvasContext::uniform2fva(CanvasUniformLocation *location, QVariantList ar
                                 << "(location:" << location
                                 << ", array:" << array
                                 << ")";
+    if (!location)
+        return;
+
     float *arrayData = new float[array.length()];
     ArrayUtils::fillFloatArrayFromVariantList(array, arrayData);
     glUniform2fv(location->id(), array.count() / 2, arrayData);
@@ -2824,6 +2830,9 @@ void CanvasContext::uniform3fva(CanvasUniformLocation *location, QVariantList ar
                                 << "(location:" << location
                                 << ", array:" << array
                                 << ")";
+    if (!location)
+        return;
+
     float *arrayData = new float[array.length()];
     ArrayUtils::fillFloatArrayFromVariantList(array, arrayData);
     glUniform3fv(location->id(), array.count() / 3, arrayData);
@@ -2843,6 +2852,9 @@ void CanvasContext::uniform4fva(CanvasUniformLocation *location, QVariantList ar
                                 << "(location:" << location
                                 << ", array:" << array
                                 << ")";
+    if (!location)
+        return;
+
     float *arrayData = new float[array.count()];
     ArrayUtils::fillFloatArrayFromVariantList(array, arrayData);
     glUniform4fv(location->id(), array.count() / 4, arrayData);
@@ -2862,6 +2874,9 @@ void CanvasContext::uniform1iva(CanvasUniformLocation *location, QVariantList ar
                                 << "(location:" << location
                                 << ", array:" << array
                                 << ")";
+    if (!location)
+        return;
+
     int *arrayData = new int[array.length()];
     ArrayUtils::fillIntArrayFromVariantList(array, arrayData);
     glUniform1iv(location->id(), array.count(), arrayData);
@@ -2882,6 +2897,9 @@ void CanvasContext::uniform2iva(CanvasUniformLocation *location, QVariantList ar
                                 << "(location:" << location
                                 << ", array:" << array
                                 << ")";
+    if (!location)
+        return;
+
     int *arrayData = new int[array.length()];
     ArrayUtils::fillIntArrayFromVariantList(array, arrayData);
     glUniform2iv(location->id(), array.count() / 2, arrayData);
@@ -2902,6 +2920,9 @@ void CanvasContext::uniform3iva(CanvasUniformLocation *location, QVariantList ar
                                 << "(location:" << location
                                 << ", array:" << array
                                 << ")";
+    if (!location)
+        return;
+
     int *arrayData = new int[array.length()];
     ArrayUtils::fillIntArrayFromVariantList(array, arrayData);
     glUniform3iv(location->id(), array.count() / 3, arrayData);
@@ -2922,6 +2943,9 @@ void CanvasContext::uniform4iva(CanvasUniformLocation *location, QVariantList ar
                                 << "(location:" << location
                                 << ", array:" << array
                                 << ")";
+    if (!location)
+        return;
+
     int *arrayData = new int[array.length()];
     ArrayUtils::fillIntArrayFromVariantList(array, arrayData);
     glUniform4iv(location->id(), array.length() / 4, arrayData);