Mercurial > hg > truffle
comparison src/share/vm/utilities/ostream.cpp @ 11136:dbc0b5dc08f5
7143807: ResourceMark nesting problem in stringStream
Reviewed-by: kvn, dcubed
author | fparain |
---|---|
date | Wed, 10 Jul 2013 15:49:15 +0000 |
parents | 0598674c0056 |
children | 6b0fd0964b87 621eda7235d2 01b268b3080a bdd155477289 |
comparison
equal
deleted
inserted
replaced
11105:22baec423e2f | 11136:dbc0b5dc08f5 |
---|---|
294 stringStream::stringStream(size_t initial_size) : outputStream() { | 294 stringStream::stringStream(size_t initial_size) : outputStream() { |
295 buffer_length = initial_size; | 295 buffer_length = initial_size; |
296 buffer = NEW_RESOURCE_ARRAY(char, buffer_length); | 296 buffer = NEW_RESOURCE_ARRAY(char, buffer_length); |
297 buffer_pos = 0; | 297 buffer_pos = 0; |
298 buffer_fixed = false; | 298 buffer_fixed = false; |
299 DEBUG_ONLY(rm = Thread::current()->current_resource_mark();) | |
299 } | 300 } |
300 | 301 |
301 // useful for output to fixed chunks of memory, such as performance counters | 302 // useful for output to fixed chunks of memory, such as performance counters |
302 stringStream::stringStream(char* fixed_buffer, size_t fixed_buffer_size) : outputStream() { | 303 stringStream::stringStream(char* fixed_buffer, size_t fixed_buffer_size) : outputStream() { |
303 buffer_length = fixed_buffer_size; | 304 buffer_length = fixed_buffer_size; |
319 // increase to the requested size. | 320 // increase to the requested size. |
320 if (end < buffer_length * 2) { | 321 if (end < buffer_length * 2) { |
321 end = buffer_length * 2; | 322 end = buffer_length * 2; |
322 } | 323 } |
323 char* oldbuf = buffer; | 324 char* oldbuf = buffer; |
325 assert(rm == NULL || Thread::current()->current_resource_mark() == rm, | |
326 "stringStream is re-allocated with a different ResourceMark"); | |
324 buffer = NEW_RESOURCE_ARRAY(char, end); | 327 buffer = NEW_RESOURCE_ARRAY(char, end); |
325 strncpy(buffer, oldbuf, buffer_pos); | 328 strncpy(buffer, oldbuf, buffer_pos); |
326 buffer_length = end; | 329 buffer_length = end; |
327 } | 330 } |
328 } | 331 } |