Negative numbers are not flags.
authormtklein <mtklein@chromium.org>
Sun, 15 Feb 2015 02:56:31 +0000 (18:56 -0800)
committerCommit bot <commit-bot@chromium.org>
Sun, 15 Feb 2015 02:56:31 +0000 (18:56 -0800)
tested: d dm --matrix 1 -0.3 0 0.7 1 0 0 0 1 --src gm --config matrix-8888 -w bad

BUG=skia:

Review URL: https://codereview.chromium.org/924343002

tools/flags/SkCommandLineFlags.cpp

index 50c193f..6f1491b 100644 (file)
@@ -282,7 +282,12 @@ void SkCommandLineFlags::Parse(int argc, char** argv) {
                         case SkFlagInfo::kString_FlagType:
                             flag->resetStrings();
                             // Add all arguments until another flag is reached.
-                            while (i+1 < argc && !SkStrStartsWith(argv[i+1], '-')) {
+                            while (i+1 < argc) {
+                                char* end = NULL;
+                                (void)strtod(argv[i+1], &end); // Negative numbers aren't flags.
+                                if (end == argv[i+1] && SkStrStartsWith(argv[i+1], '-')) {
+                                    break;
+                                }
                                 i++;
                                 flag->append(argv[i]);
                             }