mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
6619271: The -Xprintflags causes the VM to segv
Add null checks Reviewed-by: jrose, kvn
This commit is contained in:
parent
1659f11da6
commit
89290f2817
1 changed files with 28 additions and 23 deletions
|
@ -68,6 +68,7 @@ void Flag::print_on(outputStream* st) {
|
||||||
if (is_uintx()) st->print("%-16lu", get_uintx());
|
if (is_uintx()) st->print("%-16lu", get_uintx());
|
||||||
if (is_ccstr()) {
|
if (is_ccstr()) {
|
||||||
const char* cp = get_ccstr();
|
const char* cp = get_ccstr();
|
||||||
|
if (cp != NULL) {
|
||||||
const char* eol;
|
const char* eol;
|
||||||
while ((eol = strchr(cp, '\n')) != NULL) {
|
while ((eol = strchr(cp, '\n')) != NULL) {
|
||||||
char format_buffer[FORMAT_BUFFER_LEN];
|
char format_buffer[FORMAT_BUFFER_LEN];
|
||||||
|
@ -81,6 +82,7 @@ void Flag::print_on(outputStream* st) {
|
||||||
}
|
}
|
||||||
st->print("%-16s", cp);
|
st->print("%-16s", cp);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
st->print(" %s", kind);
|
st->print(" %s", kind);
|
||||||
st->cr();
|
st->cr();
|
||||||
}
|
}
|
||||||
|
@ -94,11 +96,13 @@ void Flag::print_as_flag(outputStream* st) {
|
||||||
st->print("-XX:%s=" UINTX_FORMAT, name, get_uintx());
|
st->print("-XX:%s=" UINTX_FORMAT, name, get_uintx());
|
||||||
} else if (is_ccstr()) {
|
} else if (is_ccstr()) {
|
||||||
st->print("-XX:%s=", name);
|
st->print("-XX:%s=", name);
|
||||||
|
const char* cp = get_ccstr();
|
||||||
|
if (cp != NULL) {
|
||||||
// Need to turn embedded '\n's back into separate arguments
|
// Need to turn embedded '\n's back into separate arguments
|
||||||
// Not so efficient to print one character at a time,
|
// Not so efficient to print one character at a time,
|
||||||
// but the choice is to do the transformation to a buffer
|
// but the choice is to do the transformation to a buffer
|
||||||
// and print that. And this need not be efficient.
|
// and print that. And this need not be efficient.
|
||||||
for (const char* cp = get_ccstr(); *cp != '\0'; cp += 1) {
|
for (; *cp != '\0'; cp += 1) {
|
||||||
switch (*cp) {
|
switch (*cp) {
|
||||||
default:
|
default:
|
||||||
st->print("%c", *cp);
|
st->print("%c", *cp);
|
||||||
|
@ -108,6 +112,7 @@ void Flag::print_as_flag(outputStream* st) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
ShouldNotReachHere();
|
ShouldNotReachHere();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue