mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
fix new String:realloc* variants always to zero-terminate the string
This commit is contained in:
@ -255,17 +255,30 @@ public:
|
||||
return real_alloc(arg_length);
|
||||
}
|
||||
bool real_alloc(uint32 arg_length); // Empties old string
|
||||
bool realloc(uint32 arg_length);
|
||||
bool realloc_raw(uint32 arg_length);
|
||||
bool realloc(uint32 arg_length)
|
||||
{
|
||||
if (realloc_raw(arg_length))
|
||||
return TRUE;
|
||||
Ptr[arg_length]=0; // This make other funcs shorter
|
||||
return FALSE;
|
||||
}
|
||||
bool realloc_with_extra(uint32 arg_length)
|
||||
{
|
||||
if (extra_alloc < 4096)
|
||||
extra_alloc= extra_alloc*2+128;
|
||||
return realloc(arg_length + extra_alloc);
|
||||
if (realloc_raw(arg_length + extra_alloc))
|
||||
return TRUE;
|
||||
Ptr[arg_length]=0; // This make other funcs shorter
|
||||
return FALSE;
|
||||
}
|
||||
bool realloc_with_extra_if_needed(uint32 arg_length)
|
||||
{
|
||||
if (arg_length < Alloced_length)
|
||||
{
|
||||
Ptr[arg_length]=0; // behave as if realloc was called.
|
||||
return 0;
|
||||
}
|
||||
return realloc_with_extra(arg_length);
|
||||
}
|
||||
inline void shrink(uint32 arg_length) // Shrink buffer
|
||||
|
Reference in New Issue
Block a user