mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-25 09:30:32 +08:00
runtime: always initialize str field in __go_string_slice result
Reviewed-on: https://go-review.googlesource.com/64110 From-SVN: r252953
This commit is contained in:
parent
e1227692dd
commit
4d034b5259
@ -1,4 +1,4 @@
|
||||
abe58fdc529378706d65d6b22e4871646eb9023e
|
||||
be69546afcac182cc93c569bc96665f0ef72d66a
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
@ -18,10 +18,13 @@ __go_string_slice (String s, intgo start, intgo end)
|
||||
if (start > len || end < start || end > len)
|
||||
runtime_panicstring ("string index out of bounds");
|
||||
ret.len = end - start;
|
||||
// If the length of the new string is zero, don't adjust the str
|
||||
// field. This ensures that we don't create a pointer to the next
|
||||
// memory block, and thus keep it live unnecessarily.
|
||||
if (ret.len > 0)
|
||||
// If the length of the new string is zero, the str field doesn't
|
||||
// matter, so just set it to nil. This avoids the problem of
|
||||
// s.str + start pointing just past the end of the string,
|
||||
// which may keep the next memory block alive unnecessarily.
|
||||
if (ret.len == 0)
|
||||
ret.str = nil;
|
||||
else
|
||||
ret.str = s.str + start;
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user