< prev index next >

src/share/vm/runtime/arguments.cpp

Print this page
rev 8851 : [mq]: webrev.00
rev 8852 : [mq]: webrev.01
rev 8853 : [mq]: webrev.02

*** 579,590 **** return false; } } static bool set_fp_numeric_flag(char* name, char* value, Flag::Flags origin) { ! double v; ! if (sscanf(value, "%lf", &v) != 1) { return false; } if (CommandLineFlags::doubleAtPut(name, &v, origin) == Flag::SUCCESS) { return true; --- 579,592 ---- return false; } } static bool set_fp_numeric_flag(char* name, char* value, Flag::Flags origin) { ! char* end; ! errno = 0; ! double v = strtod(value, &end); ! if ((errno != 0) || (*end != 0)) { return false; } if (CommandLineFlags::doubleAtPut(name, &v, origin) == Flag::SUCCESS) { return true;
*** 714,726 **** value = NULL; } return set_string_flag(name, value, origin); } ! #define SIGNED_FP_NUMBER_RANGE "[-0123456789.]" #define SIGNED_NUMBER_RANGE "[-0123456789]" ! #define NUMBER_RANGE "[0123456789]" char value[BUFLEN + 1]; char value2[BUFLEN + 1]; if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE "=" "%" XSTR(BUFLEN) SIGNED_NUMBER_RANGE "." "%" XSTR(BUFLEN) NUMBER_RANGE "%c", name, value, value2, &dummy) == 3) { // Looks like a floating-point number -- try again with more lenient format string if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE "=" "%" XSTR(BUFLEN) SIGNED_FP_NUMBER_RANGE "%c", name, value, &dummy) == 2) { --- 716,728 ---- value = NULL; } return set_string_flag(name, value, origin); } ! #define SIGNED_FP_NUMBER_RANGE "[-0123456789.eE+]" #define SIGNED_NUMBER_RANGE "[-0123456789]" ! #define NUMBER_RANGE "[0123456789eE+-]" char value[BUFLEN + 1]; char value2[BUFLEN + 1]; if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE "=" "%" XSTR(BUFLEN) SIGNED_NUMBER_RANGE "." "%" XSTR(BUFLEN) NUMBER_RANGE "%c", name, value, value2, &dummy) == 3) { // Looks like a floating-point number -- try again with more lenient format string if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE "=" "%" XSTR(BUFLEN) SIGNED_FP_NUMBER_RANGE "%c", name, value, &dummy) == 2) {
< prev index next >