diff options
author | unknown <petr@mysql.com> | 2005-08-05 14:35:30 +0400 |
---|---|---|
committer | unknown <petr@mysql.com> | 2005-08-05 14:35:30 +0400 |
commit | 85834c3b030e6680b02cf8b49ea71903d30a4ea2 (patch) | |
tree | bec1dbc1b759160295f274de25f51be456392277 /server-tools/instance-manager/commands.cc | |
parent | c5bcb9f01c459e43e0c19e14b2910bea4af26393 (diff) | |
download | mariadb-git-85834c3b030e6680b02cf8b49ea71903d30a4ea2.tar.gz |
IM port fixes: fix crash on startup, add more error checking, get rid of unnecessary code.
server-tools/instance-manager/commands.cc:
fix memory leak
server-tools/instance-manager/guardian.cc:
don't check pthread_mutex_lock/unlock return value, as it never returns error if properly
used (no self deadlocks) and initialized
server-tools/instance-manager/guardian.h:
prototype fixed
server-tools/instance-manager/instance_map.cc:
don't check pthread_mutex_lock/unlock status, as it never returns error if
properly used (no self deadlocks) and initialized
server-tools/instance-manager/instance_map.h:
prototype fixed
server-tools/instance-manager/listener.cc:
initialize highest-numbered descriptor to 0 for select before setting it with max(n, sockets[i]),
ifdef unix-specific code
server-tools/instance-manager/manager.cc:
remove commented stuff
server-tools/instance-manager/options.cc:
fix crash in load_defaults, which happened on all Unix systems due to
const char *Options::config_file= NULL. Check return value for GetModuleFileName.
Get rid of obscure default_config_file[FN_REFLEN]= "/etc/my.cnf"; which was never used
Diffstat (limited to 'server-tools/instance-manager/commands.cc')
-rw-r--r-- | server-tools/instance-manager/commands.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/server-tools/instance-manager/commands.cc b/server-tools/instance-manager/commands.cc index 7589da859cf..0f801c8cc7e 100644 --- a/server-tools/instance-manager/commands.cc +++ b/server-tools/instance-manager/commands.cc @@ -471,6 +471,7 @@ int Show_instance_log::execute(struct st_net *net, ulong connection_id) int read_len; /* calculate buffer size */ MY_STAT file_stat; + Buffer read_buff; /* my_fstat doesn't use the flag parameter */ if (my_fstat(fd, &file_stat, MYF(0))) @@ -478,13 +479,16 @@ int Show_instance_log::execute(struct st_net *net, ulong connection_id) buff_size= (size - offset); + read_buff.reserve(0, buff_size); + /* read in one chunk */ read_len= my_seek(fd, file_stat.st_size - size, MY_SEEK_SET, MYF(0)); - char *bf= (char*) malloc(sizeof(char)*buff_size); - if ((read_len= my_read(fd, (byte*)bf, buff_size, MYF(0))) < 0) + if ((read_len= my_read(fd, (byte*) read_buff.buffer, + buff_size, MYF(0))) < 0) return ER_READ_FILE; - store_to_protocol_packet(&send_buff, (char*) bf, &position, read_len); + store_to_protocol_packet(&send_buff, read_buff.buffer, + &position, read_len); close(fd); } else |