diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp
index 7f2ccf5eb68b585d9d71df02dbd979f4fa905f5e..010b04299926679dc3531cdb64ed8a38661ffafc 100644
--- a/Common/CommandLine.cpp
+++ b/Common/CommandLine.cpp
@@ -564,12 +564,15 @@ void GetOptions(int argc, char *argv[])
         i++;
 	if (i + 1 < argc && argv[i][0] != '-') {
           std::string n(argv[i]);
-          std::vector<double> v(1, atof(argv[i + 1]));
+          std::vector<double> v;
+          int s = atoi(argv[i + 1]), j = 0;
           i += 2;
-          while(i < argc && argv[i][0] != '-'){
+          while(j < s && i < argc){
             v.push_back(atof(argv[i]));
-            i++;
+            i++; j++;
           }
+          if(j < s)
+            Message::Error("Missing values in list (got %d instead of %d)", j, s);
           gmsh_yysymbols[n].value = v;
           Msg::GetCommandLineNumbers()[n] = v;
 	}