< prev index next >
src/share/vm/oops/symbol.cpp
Print this page
rev 10169 : 8149557: Resource mark breaks printing to string stream
@@ -156,13 +156,21 @@
void Symbol::print_utf8_on(outputStream* st) const {
st->print("%s", as_C_string());
}
void Symbol::print_symbol_on(outputStream* st) const {
- ResourceMark rm;
+ char *s;
st = st ? st : tty;
- st->print("%s", as_quoted_ascii());
+ {
+ // ResourceMark may not affect st->print(). If st is a string
+ // stream it could resize, using the same resource arena.
+ ResourceMark rm;
+ s = as_quoted_ascii();
+ s = os::strdup(s);
+ }
+ st->print("%s", s);
+ os::free(s);
}
char* Symbol::as_quoted_ascii() const {
const char *ptr = (const char *)&_body[0];
int quoted_length = UTF8::quoted_ascii_length(ptr, utf8_length());
< prev index next >