diff options
Diffstat (limited to 'server-tools/instance-manager/buffer.cc')
-rw-r--r-- | server-tools/instance-manager/buffer.cc | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/server-tools/instance-manager/buffer.cc b/server-tools/instance-manager/buffer.cc index ca84adbfd10..b000a48d5ae 100644 --- a/server-tools/instance-manager/buffer.cc +++ b/server-tools/instance-manager/buffer.cc @@ -40,7 +40,7 @@ RETURN 0 - ok - 1 - The buffer came to 16Mb barrier + 1 - got an error in reserve() */ int Buffer::append(uint position, const char *string, uint len_arg) @@ -71,7 +71,7 @@ int Buffer::append(uint position, const char *string, uint len_arg) RETURN 0 - ok - 1 - The buffer came to 16Mb barrier + 1 - realloc error or we have come to the 16Mb barrier */ int Buffer::reserve(uint position, uint len_arg) @@ -79,19 +79,31 @@ int Buffer::reserve(uint position, uint len_arg) if (position + len_arg >= MAX_BUFFER_SIZE) goto err; - if (position + len_arg>= buffer_size) + if (position + len_arg >= buffer_size) { - buffer= (char *) realloc(buffer, - min(MAX_BUFFER_SIZE, - max((uint) (buffer_size*1.5), - position + len_arg))); - if (buffer == NULL) + buffer= (char *) my_realloc(buffer, + min(MAX_BUFFER_SIZE, + max((uint) (buffer_size*1.5), + position + len_arg)), MYF(0)); + if (!(buffer)) goto err; buffer_size= (uint) (buffer_size*1.5); } return 0; err: + error= 1; return 1; } + +int Buffer::get_size() +{ + return buffer_size; +} + + +int Buffer::is_error() +{ + return error; +} |