summaryrefslogtreecommitdiff
path: root/server-tools/instance-manager/buffer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'server-tools/instance-manager/buffer.cc')
-rw-r--r--server-tools/instance-manager/buffer.cc28
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;
+}