diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index 8f228f51ed7..7f648eb90df 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -1712,7 +1712,7 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user, charset_name=charset_name_buff; sprintf(charset_name,"%d",mysql->server_language); /* In case of errors */ if (!(mysql->charset = - get_charset((uint8) mysql->server_language, MYF(MY_WME)))) + get_charset((uint8) mysql->server_language, MYF(0)))) mysql->charset = default_charset_info; /* shouldn't be fatal */ } diff --git a/mysys/charset.c b/mysys/charset.c index 47eaf3587d5..70f3f2902f1 100644 --- a/mysys/charset.c +++ b/mysys/charset.c @@ -296,7 +296,7 @@ static CHARSET_INFO *find_charset_by_name(CHARSET_INFO **table, return NULL; } -static CHARSET_INFO *add_charset(uint cs_number, const char *cs_name) +static CHARSET_INFO *add_charset(uint cs_number, const char *cs_name, myf flags) { CHARSET_INFO tmp_cs,*cs; uchar tmp_ctype[CTYPE_TABLE_SIZE]; @@ -311,11 +311,11 @@ static CHARSET_INFO *add_charset(uint cs_number, const char *cs_name) cs->to_lower=tmp_to_lower; cs->to_upper=tmp_to_upper; cs->sort_order=tmp_sort_order; - if (read_charset_file(cs_number, cs, MYF(MY_WME))) + if (read_charset_file(cs_number, cs, flags)) return NULL; cs = (CHARSET_INFO*) my_once_alloc(sizeof(CHARSET_INFO), - MYF(MY_WME)); + MYF(MY_WME)); *cs=tmp_cs; cs->name = (char *) my_once_alloc((uint) strlen(cs_name)+1, MYF(MY_WME)); cs->ctype = (uchar*) my_once_alloc(CTYPE_TABLE_SIZE, MYF(MY_WME)); @@ -333,7 +333,7 @@ static CHARSET_INFO *add_charset(uint cs_number, const char *cs_name) return cs; } -static CHARSET_INFO *get_internal_charset(uint cs_number) +static CHARSET_INFO *get_internal_charset(uint cs_number, myf flags) { CHARSET_INFO *cs; /* @@ -344,13 +344,13 @@ static CHARSET_INFO *get_internal_charset(uint cs_number) if (!(cs = find_charset((CHARSET_INFO**) cs_info_table.buffer, cs_number, cs_info_table.elements))) if (!(cs = find_compiled_charset(cs_number))) - cs=add_charset(cs_number, get_charset_name(cs_number)); + cs=add_charset(cs_number, get_charset_name(cs_number), flags); pthread_mutex_unlock(&THR_LOCK_charset); return cs; } -static CHARSET_INFO *get_internal_charset_by_name(const char *name) +static CHARSET_INFO *get_internal_charset_by_name(const char *name, myf flags) { CHARSET_INFO *cs; /* @@ -361,7 +361,7 @@ static CHARSET_INFO *get_internal_charset_by_name(const char *name) if (!(cs = find_charset_by_name((CHARSET_INFO**) cs_info_table.buffer, name, cs_info_table.elements))) if (!(cs = find_compiled_charset_by_name(name))) - cs=add_charset(get_charset_number(name), name); + cs=add_charset(get_charset_number(name), name, flags); pthread_mutex_unlock(&THR_LOCK_charset); return cs; } @@ -371,7 +371,7 @@ CHARSET_INFO *get_charset(uint cs_number, myf flags) { CHARSET_INFO *cs; (void) init_available_charsets(MYF(0)); /* If it isn't initialized */ - cs=get_internal_charset(cs_number); + cs=get_internal_charset(cs_number, flags); if (!cs && (flags & MY_WME)) { @@ -403,7 +403,7 @@ CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags) { CHARSET_INFO *cs; (void) init_available_charsets(MYF(0)); /* If it isn't initialized */ - cs=get_internal_charset_by_name(cs_name); + cs=get_internal_charset_by_name(cs_name, flags); if (!cs && (flags & MY_WME)) {