src/share/vm/utilities/ostream.cpp

changeset 9920
3a3803a0c789
parent 9906
0df63a32f7bb
child 9931
fd44df5e3bc3
     1.1 --- a/src/share/vm/utilities/ostream.cpp	Mon Sep 23 20:26:18 2019 +0200
     1.2 +++ b/src/share/vm/utilities/ostream.cpp	Fri Apr 03 14:14:26 2020 +0100
     1.3 @@ -344,15 +344,19 @@
     1.4        assert(rm == NULL || Thread::current()->current_resource_mark() == rm,
     1.5               "stringStream is re-allocated with a different ResourceMark");
     1.6        buffer = NEW_RESOURCE_ARRAY(char, end);
     1.7 -      strncpy(buffer, oldbuf, buffer_pos);
     1.8 +      if (buffer_pos > 0) {
     1.9 +        memcpy(buffer, oldbuf, buffer_pos);
    1.10 +      }
    1.11        buffer_length = end;
    1.12      }
    1.13    }
    1.14    // invariant: buffer is always null-terminated
    1.15    guarantee(buffer_pos + write_len + 1 <= buffer_length, "stringStream oob");
    1.16 -  buffer[buffer_pos + write_len] = 0;
    1.17 -  strncpy(buffer + buffer_pos, s, write_len);
    1.18 -  buffer_pos += write_len;
    1.19 +  if (write_len > 0) {
    1.20 +    buffer[buffer_pos + write_len] = 0;
    1.21 +    memcpy(buffer + buffer_pos, s, write_len);
    1.22 +    buffer_pos += write_len;
    1.23 +  }
    1.24  
    1.25    // Note that the following does not depend on write_len.
    1.26    // This means that position and count get updated

mercurial