summaryrefslogtreecommitdiff
path: root/mysys/charset.c
diff options
context:
space:
mode:
authortsmith/tim@siva.hindu.god <>2006-09-14 23:22:25 -0600
committertsmith/tim@siva.hindu.god <>2006-09-14 23:22:25 -0600
commitfb6625e4952b073e0153e2776a52d0c28fa205da (patch)
treef08ee152e3d58f0e4b866743241b14914db43e6d /mysys/charset.c
parente38f04a09f3c5fbc261273cb50bbf06434830fa3 (diff)
parent43e8890abc5d48de0bb626081e685770bbbbe8cf (diff)
downloadmariadb-git-fb6625e4952b073e0153e2776a52d0c28fa205da.tar.gz
Merge siva.hindu.god:/usr/home/tim/m/bk/tmp/41
into siva.hindu.god:/usr/home/tim/m/bk/tmp/50
Diffstat (limited to 'mysys/charset.c')
-rw-r--r--mysys/charset.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/mysys/charset.c b/mysys/charset.c
index 64b15fab0c2..d10a580ae4e 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;
}