diff options
author | unknown <tsmith/tim@siva.hindu.god> | 2006-09-14 21:06:14 -0600 |
---|---|---|
committer | unknown <tsmith/tim@siva.hindu.god> | 2006-09-14 21:06:14 -0600 |
commit | da5e2660b7ecea8b255f8b7e4f69c61d157918d7 (patch) | |
tree | 6a6c6d9cb46162d68a20659ad5334f4961be694c /mysys | |
parent | 7a77b3d80fe711fa4e9123a8a7be782bcef1d8db (diff) | |
download | mariadb-git-da5e2660b7ecea8b255f8b7e4f69c61d157918d7.tar.gz |
Bug #4053: too many of "error 1236: 'binlog truncated in the middle of event' from master"
- Detect read failure in my_read_charset_file
mysys/charset.c:
Use my_read instead of read(), and detect read failure, in my_read_charset_file()
Diffstat (limited to 'mysys')
-rw-r--r-- | mysys/charset.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/mysys/charset.c b/mysys/charset.c index 665f2efecd8..6f2d4d3c347 100644 --- a/mysys/charset.c +++ b/mysys/charset.c @@ -312,7 +312,7 @@ static my_bool my_read_charset_file(const char *filename, myf myflags) { char *buf; int fd; - uint len; + uint len, tmp_len; MY_STAT stat_info; if (!my_stat(filename, &stat_info, MYF(myflags)) || @@ -321,12 +321,11 @@ static my_bool my_read_charset_file(const char *filename, myf myflags) return TRUE; if ((fd=my_open(filename,O_RDONLY,myflags)) < 0) - { - my_free(buf,myflags); - return TRUE; - } - len=read(fd,buf,len); + goto error; + tmp_len=my_read(fd, buf, len, myflags); my_close(fd,myflags); + if (tmp_len != len) + goto error; if (my_parse_charset_xml(buf,len,add_collation)) { @@ -340,6 +339,10 @@ static my_bool my_read_charset_file(const char *filename, myf myflags) my_free(buf, myflags); return FALSE; + +error: + my_free(buf, myflags); + return TRUE; } |