# HG changeset patch # User fparain # Date 1327516349 28800 # Node ID 520830f632e73e57a8ba0ae2e4a4c3633fa877ab # Parent 78dadb7b16ab8d36257982b425e4ff31070b02f5 7131346: Parsing of boolean arguments to diagnostic commands is broken Reviewed-by: dholmes, dcubed diff -r 78dadb7b16ab -r 520830f632e7 src/share/vm/services/diagnosticArgument.cpp --- a/src/share/vm/services/diagnosticArgument.cpp Wed Jan 25 01:16:03 2012 -0800 +++ b/src/share/vm/services/diagnosticArgument.cpp Wed Jan 25 10:32:29 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2012 Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -59,12 +59,13 @@ template <> void DCmdArgument::parse_value(const char* str, size_t len, TRAPS) { + // len is the length of the current token starting at str if (len == 0) { set_value(true); } else { - if (strcasecmp(str, "true") == 0) { + if (len == strlen("true") && strncasecmp(str, "true", len) == 0) { set_value(true); - } else if (strcasecmp(str, "false") == 0) { + } else if (len == strlen("false") && strncasecmp(str, "false", len) == 0) { set_value(false); } else { THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), diff -r 78dadb7b16ab -r 520830f632e7 src/share/vm/utilities/globalDefinitions_visCPP.hpp --- a/src/share/vm/utilities/globalDefinitions_visCPP.hpp Wed Jan 25 01:16:03 2012 -0800 +++ b/src/share/vm/utilities/globalDefinitions_visCPP.hpp Wed Jan 25 10:32:29 2012 -0800 @@ -130,6 +130,9 @@ //---------------------------------------------------------------------------------------------------- // Non-standard stdlib-like stuff: inline int strcasecmp(const char *s1, const char *s2) { return _stricmp(s1,s2); } +inline int strncasecmp(const char *s1, const char *s2, size_t n) { + return _strnicmp(s1,s2,n); +} //----------------------------------------------------------------------------------------------------