diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py
index e9c4474502922b81699422f02768bace3aa3d1b5..0108257ceb3ab0b94b0f523da0f379bf19f1e3f2 100644
--- a/pyopencl/__init__.py
+++ b/pyopencl/__init__.py
@@ -224,6 +224,10 @@ def _add_functionality():
                 self.set_arg(i, arg)
         else:
             from struct import pack
+
+            if len(args) != len(arg_type_chars):
+                raise ValueError("length of argument type array and "
+                        "length of argument list do not agree")
             for i, (arg, arg_type_char) in enumerate(
                     zip(args, arg_type_chars)):
                 if arg_type_char: