summaryrefslogtreecommitdiff
path: root/client/mysqltest.cc
diff options
context:
space:
mode:
authorVicențiu Ciorbaru <vicentiu@mariadb.org>2017-06-20 12:31:17 +0300
committerVicențiu Ciorbaru <vicentiu@mariadb.org>2017-06-20 12:31:17 +0300
commit8baf9b0c469e2845d15cc1181bc6b101cdfba087 (patch)
treef5808173b56692f71874213639401af1e18cb146 /client/mysqltest.cc
parent5e4f4ec8211b61e71ec29069161d0f41f4c05376 (diff)
parentded614d7dbc930e373d1a69a0d2a7e4bf0a2c6d3 (diff)
downloadmariadb-git-8baf9b0c469e2845d15cc1181bc6b101cdfba087.tar.gz
Merge remote-tracking branch '5.5' into 10.0
Diffstat (limited to 'client/mysqltest.cc')
-rw-r--r--client/mysqltest.cc19
1 files changed, 15 insertions, 4 deletions
diff --git a/client/mysqltest.cc b/client/mysqltest.cc
index f9715bfbfdb..2ed2a10e975 100644
--- a/client/mysqltest.cc
+++ b/client/mysqltest.cc
@@ -1721,12 +1721,23 @@ void log_msg(const char *fmt, ...)
int cat_file(DYNAMIC_STRING* ds, const char* filename)
{
int fd;
- int len;
- char buff[16384];
+ size_t len;
+ char *buff;
if ((fd= my_open(filename, O_RDONLY, MYF(0))) < 0)
return 1;
- while((len= (int)my_read(fd, (uchar*)&buff, sizeof(buff)-1, MYF(0))) > 0)
+
+ len= (size_t) my_seek(fd, 0, SEEK_END, MYF(0));
+ my_seek(fd, 0, SEEK_SET, MYF(0));
+ if (len == (size_t)MY_FILEPOS_ERROR ||
+ !(buff= (char*)my_malloc(len + 1, MYF(0))))
+ {
+ my_close(fd, MYF(0));
+ return 1;
+ }
+ len= my_read(fd, (uchar*)buff, len, MYF(0));
+ my_close(fd, MYF(0));
+
{
char *p= buff, *start= buff,*end=buff+len;
while (p < end)
@@ -1749,7 +1760,7 @@ int cat_file(DYNAMIC_STRING* ds, const char* filename)
*p= 0;
replace_dynstr_append_mem(ds, start, p-start);
}
- my_close(fd, MYF(0));
+ my_free(buff);
return 0;
}