mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Removed Static_binary_string
This did not server any real purpose and also made it too difficult to add asserts for string memory overrwrites. Moved all functionallity from Static_binary_string to Binary_string. Other things: - Added asserts to q_xxx and qs_xxx functions to check for memory overruns - Fixed wrong test in String_buffer::set_buffer_if_not_allocated(). The idea is to reuse allocated buffers (to avoid extra allocs), which the code did not do.
This commit is contained in:
@ -163,8 +163,9 @@ static inline void APPEND_HEX(char *&to, uchar value)
|
||||
}
|
||||
|
||||
|
||||
void Static_binary_string::qs_append_hex(const char *str, uint32 len)
|
||||
void Binary_string::qs_append_hex(const char *str, uint32 len)
|
||||
{
|
||||
ASSERT_LENGTH(len*2);
|
||||
const char *str_end= str + len;
|
||||
for (char *to= Ptr + str_length ; str < str_end; str++)
|
||||
APPEND_HEX(to, (uchar) *str);
|
||||
@ -665,7 +666,7 @@ bool String::append_with_prefill(const char *s,uint32 arg_length,
|
||||
}
|
||||
|
||||
|
||||
int Static_binary_string::strstr(const Static_binary_string &s, uint32 offset)
|
||||
int Binary_string::strstr(const Binary_string &s, uint32 offset)
|
||||
{
|
||||
if (s.length()+offset <= str_length)
|
||||
{
|
||||
@ -696,7 +697,7 @@ skip:
|
||||
** Search string from end. Offset is offset to the end of string
|
||||
*/
|
||||
|
||||
int Static_binary_string::strrstr(const Static_binary_string &s, uint32 offset)
|
||||
int Binary_string::strrstr(const Binary_string &s, uint32 offset)
|
||||
{
|
||||
if (s.length() <= offset && offset <= str_length)
|
||||
{
|
||||
@ -766,38 +767,43 @@ int Binary_string::reserve(size_t space_needed, size_t grow_by)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void Static_binary_string::qs_append(const char *str, size_t len)
|
||||
void Binary_string::qs_append(const char *str, size_t len)
|
||||
{
|
||||
ASSERT_LENGTH(len);
|
||||
memcpy(Ptr + str_length, str, len + 1);
|
||||
str_length += (uint32)len;
|
||||
}
|
||||
|
||||
void Static_binary_string::qs_append(double d)
|
||||
void Binary_string::qs_append(double d)
|
||||
{
|
||||
char *buff = Ptr + str_length;
|
||||
str_length+= (uint32) my_gcvt(d, MY_GCVT_ARG_DOUBLE, FLOATING_POINT_BUFFER - 1, buff,
|
||||
NULL);
|
||||
size_t length= my_gcvt(d, MY_GCVT_ARG_DOUBLE, FLOATING_POINT_BUFFER - 1,
|
||||
buff, NULL);
|
||||
ASSERT_LENGTH(length);
|
||||
str_length+= (uint32) length;
|
||||
}
|
||||
|
||||
void Static_binary_string::qs_append(const double *d)
|
||||
void Binary_string::qs_append(const double *d)
|
||||
{
|
||||
double ld;
|
||||
float8get(ld, (const char*) d);
|
||||
qs_append(ld);
|
||||
}
|
||||
|
||||
void Static_binary_string::qs_append(int i)
|
||||
void Binary_string::qs_append(int i)
|
||||
{
|
||||
char *buff= Ptr + str_length;
|
||||
char *end= int10_to_str(i, buff, -10);
|
||||
str_length+= (int) (end-buff);
|
||||
ASSERT_LENGTH((size_t) (end-buff));
|
||||
str_length+= (uint32) (end-buff);
|
||||
}
|
||||
|
||||
void Static_binary_string::qs_append(ulonglong i)
|
||||
void Binary_string::qs_append(ulonglong i)
|
||||
{
|
||||
char *buff= Ptr + str_length;
|
||||
char *end= longlong10_to_str(i, buff, 10);
|
||||
str_length+= (int) (end-buff);
|
||||
ASSERT_LENGTH((size_t) (end-buff));
|
||||
str_length+= (uint32) (end-buff);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user