COMPMID-415: Fix list commandline options

Change-Id: I72f2552cc9809d4c5b053733b8e326c5aed72bc0
Reviewed-on: http://mpd-gerrit.cambridge.arm.com/86115
Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com>
Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
diff --git a/framework/command_line/EnumListOption.h b/framework/command_line/EnumListOption.h
index 41c5b6e..d19bfbd 100644
--- a/framework/command_line/EnumListOption.h
+++ b/framework/command_line/EnumListOption.h
@@ -85,17 +85,21 @@
 {
     // Remove default values
     _values.clear();
+    _is_set = true;
 
     try
     {
         std::stringstream stream{ value };
-        T                 typed_value{};
+        std::string       item;
 
-        while(stream.good())
+        while(!std::getline(stream, item, ',').fail())
         {
-            stream >> typed_value;
+            std::stringstream item_stream(item);
+            T                 typed_value{};
 
-            if(!stream.fail())
+            item_stream >> typed_value;
+
+            if(!item_stream.fail())
             {
                 if(_allowed_values.count(typed_value) == 0)
                 {
@@ -106,14 +110,9 @@
                 _values.emplace_back(typed_value);
             }
 
-            if(!stream.eof())
-            {
-                stream.ignore(1, ',');
-            }
+            _is_set = _is_set && !item_stream.fail();
         }
 
-        _is_set = !stream.fail();
-
         return _is_set;
     }
     catch(const std::invalid_argument &)
@@ -133,7 +132,7 @@
         msg << value << ",";
     }
 
-    msg << "} - " << _help;
+    msg << "}[,{...}[,...]] - " << _help;
 
     return msg.str();
 }