Backport of Bug#14171740 65562: STRING::SHRINK SHOULD BE A NO-OP WHEN ALLOCED=0
This commit is contained in:
parent
aef1982be0
commit
d24a78d1ea
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -195,8 +195,12 @@ public:
|
|||||||
}
|
}
|
||||||
bool real_alloc(uint32 arg_length); // Empties old string
|
bool real_alloc(uint32 arg_length); // Empties old string
|
||||||
bool realloc(uint32 arg_length);
|
bool realloc(uint32 arg_length);
|
||||||
inline void shrink(uint32 arg_length) // Shrink buffer
|
|
||||||
|
// Shrink the buffer, but only if it is allocated on the heap.
|
||||||
|
inline void shrink(uint32 arg_length)
|
||||||
{
|
{
|
||||||
|
if (!is_alloced())
|
||||||
|
return;
|
||||||
if (arg_length < Alloced_length)
|
if (arg_length < Alloced_length)
|
||||||
{
|
{
|
||||||
char *new_ptr;
|
char *new_ptr;
|
||||||
@ -212,7 +216,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool is_alloced() { return alloced; }
|
bool is_alloced() const { return alloced; }
|
||||||
inline String& operator = (const String &s)
|
inline String& operator = (const String &s)
|
||||||
{
|
{
|
||||||
if (&s != this)
|
if (&s != this)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -225,8 +225,12 @@ public:
|
|||||||
}
|
}
|
||||||
bool real_alloc(uint32 arg_length); // Empties old string
|
bool real_alloc(uint32 arg_length); // Empties old string
|
||||||
bool realloc(uint32 arg_length);
|
bool realloc(uint32 arg_length);
|
||||||
inline void shrink(uint32 arg_length) // Shrink buffer
|
|
||||||
|
// Shrink the buffer, but only if it is allocated on the heap.
|
||||||
|
inline void shrink(uint32 arg_length)
|
||||||
{
|
{
|
||||||
|
if (!is_alloced())
|
||||||
|
return;
|
||||||
if (arg_length < Alloced_length)
|
if (arg_length < Alloced_length)
|
||||||
{
|
{
|
||||||
char *new_ptr;
|
char *new_ptr;
|
||||||
@ -242,7 +246,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool is_alloced() { return alloced; }
|
bool is_alloced() const { return alloced; }
|
||||||
inline String& operator = (const String &s)
|
inline String& operator = (const String &s)
|
||||||
{
|
{
|
||||||
if (&s != this)
|
if (&s != this)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user