Details
Description
Subj: Convert bzero() to memset() in directory 'mariadb-10.0.20/client'
Hello All,
In reviewing code in MariaDB 10.0.2x, I found several instances
where the deprecated library call 'bzero()' is referenced in various
files. The patch file(s) below replace calls to bzero() with memset().
The patch files are listed below and attached to this bug report:
--- completion_hash.cc.orig 2015-07-02 09:41:47.000000000 -0700
+++ completion_hash.cc 2015-07-02 09:43:54.000000000 -0700
@@ -205,7 +205,7 @@
void completion_hash_clean(HashTable *ht)
{
free_root(&ht->mem_root,MYF(0));
- bzero((char*) ht->arBuckets,ht->nTableSize*sizeof(Bucket *));
+ memset((char *)ht->arBuckets, 0, ht->nTableSize*sizeof(Bucket *));
}
--- mysql.cc.orig 2015-07-02 09:47:14.000000000 -0700
+++ mysql.cc 2015-07-02 09:48:35.000000000 -0700
@@ -1199,7 +1199,7 @@
glob_buffer.realloc(512);
completion_hash_init(&ht, 128);
init_alloc_root(&hash_mem_root, 16384, 0, MYF(0));
- bzero((char*) &mysql, sizeof(mysql));
+ memset((char *) &mysql, 0, sizeof(mysql));
if (sql_connect(current_host,current_db,current_user,opt_password,
opt_silent))
{
@@ -4212,7 +4212,7 @@
my_bool save_rehash= opt_rehash;
int error;
- bzero(buff, sizeof(buff));
+ memset(buff, 0, sizeof(buff));
if (buffer)
{
/*
@@ -4360,7 +4360,7 @@
char *tmp, buff[FN_REFLEN + 1];
int select_db;
- bzero(buff, sizeof(buff));
+ memset(buff, 0, sizeof(buff));
strmake_buf(buff, line);
tmp= get_arg(buff, 0);
if (!tmp || !*tmp)
--- mysql_plugin.c.orig 2015-07-02 09:50:00.000000000 -0700
+++ mysql_plugin.c 2015-07-02 09:50:28.000000000 -0700
@@ -321,7 +321,7 @@
int ret= 0;
FILE *file= 0;
- bzero(tool_path, FN_REFLEN);
+ memset(tool_path, 0, FN_REFLEN);
if ((error= find_tool("my_print_defaults" FN_EXEEXT, tool_path)))
goto exit;
else
--- mysql_upgrade.c.orig 2015-07-02 09:52:08.000000000 -0700
+++ mysql_upgrade.c 2015-07-02 09:52:32.000000000 -0700
@@ -664,7 +664,7 @@
if (!(in= my_fopen(upgrade_info_file, O_RDONLY, MYF(0))))
return 0; /* Could not open file => not sure */
- bzero(buf, sizeof(buf));
+ memset(buf, 0, sizeof(buf));
if (!fgets(buf, sizeof(buf), in))
{
/* Ignore, will be detected by strncmp() below */
--- mysqlbinlog.cc.orig 2015-07-02 09:54:02.000000000 -0700
+++ mysqlbinlog.cc 2015-07-02 09:55:27.000000000 -0700
@@ -305,7 +305,7 @@
{
my_free(ptr->fname);
delete ptr->event;
- bzero((char *)ptr, sizeof(File_name_record));
+ memset((char *)ptr, 0, sizeof(File_name_record));
}
}
@@ -336,7 +336,7 @@
return 0;
ptr= dynamic_element(&file_names, file_id, File_name_record*);
if ((res= ptr->event))
- bzero((char *)ptr, sizeof(File_name_record));
+ memset((char *)ptr, 0, sizeof(File_name_record));
return res;
}
@@ -366,7 +366,7 @@
if (!ptr->event)
{
res= ptr->fname;
- bzero((char *)ptr, sizeof(File_name_record));
+ memset((char *)ptr, 0, sizeof(File_name_record));
}
return res;
}
--- mysqldump.c.orig 2015-07-02 09:56:47.000000000 -0700 +++ mysqldump.c 2015-07-02 09:57:25.000000000 -0700 @@ -5809,7 +5809,7 @@ sf_leaking_memory=1; /* don't report memory leaks on early exits */ compatible_mode_normal_str[0]= 0; default_charset= (char *)mysql_universal_client_charset; - bzero((char*) &ignore_table, sizeof(ignore_table)); + memset((char *) &ignore_table, 0, sizeof(ignore_table)); exit_code= get_options(&argc, &argv); if (exit_code)
--- mysqlslap.c.orig 2015-07-02 09:59:00.000000000 -0700
+++ mysqlslap.c 2015-07-02 09:59:40.000000000 -0700
@@ -451,7 +451,7 @@
head_sptr= (stats *)my_malloc(sizeof(stats) * iterations,
MYF(MY_ZEROFILL|MY_FAE|MY_WME));
- bzero(&conclusion, sizeof(conclusions));
+ memset(&conclusion, 0, sizeof(conclusions));
if (auto_actual_queries)
client_limit= auto_actual_queries;
--- mysqltest.cc.orig 2015-07-02 10:00:43.000000000 -0700
+++ mysqltest.cc 2015-07-02 10:04:54.000000000 -0700
@@ -641,7 +641,7 @@
size_t m_bytes_written;
public:
LogFile() : m_file(NULL), m_bytes_written(0) {
- bzero(m_file_name, sizeof(m_file_name));
+ memset(m_file_name, 0, sizeof(m_file_name));
}
~LogFile() {
@@ -9842,8 +9842,8 @@
free_replace();
- bzero((char*) &to_array,sizeof(to_array));
- bzero((char*) &from_array,sizeof(from_array));
+ memset((char *) &to_array_sizeof(to_array));
+ memset((char *) &from_array, 0, sizeof(from_array));
if (!*from)
die("Missing argument in %s", command->query);
start= buff= (char*)my_malloc(strlen(from)+1,MYF(MY_WME | MY_FAE));
@@ -10026,7 +10026,7 @@
/* for each regexp substitution statement */
while (p < expr_end)
{
- bzero(®,sizeof(reg));
+ memset(®, 0, sizeof(reg));
/* find the start of the statement */
while (my_isspace(charset_info, *p) && p < expr_end)
p++;
@@ -10473,7 +10473,7 @@
if (len > max_length)
max_length=len;
}
- bzero((char*) is_word_end,sizeof(is_word_end));
+ memset((char *) is_word_end, 0, sizeof(is_word_end));
for (i=0 ; word_end_chars[i] ; i++)
is_word_end[(uchar) word_end_chars[i]]=1;
@@ -10564,7 +10564,7 @@
or_bits(sets.set+used_sets,sets.set); /* Can restart from start */
/* Find all chars that follows current sets */
- bzero((char*) used_chars,sizeof(used_chars));
+ memset((char *) used_chars, 0, sizeof(used_chars));
for (i= (uint) ~0; (i=get_next_bit(sets.set+used_sets,i)) ;)
{
used_chars[follow[i].chr]=1;
@@ -10698,7 +10698,7 @@
int init_sets(REP_SETS *sets,uint states)
{
- bzero((char*) sets,sizeof(*sets));
+ memset((char *) sets, 0, sizeof(*sets));
sets->size_of_bits=((states+7)/8);
if (!(sets->set_buffer=(REP_SET*) my_malloc(sizeof(REP_SET)*SET_MALLOC_HUNC,
MYF(MY_WME))))
@@ -10729,8 +10729,8 @@
{
sets->extra--;
set=sets->set+ sets->count++;
- bzero((char*) set->bits,sizeof(uint)*sets->size_of_bits);
- bzero((char*) &set->next[0],sizeof(set->next[0])*LAST_CHAR_CODE);
+ memset((char *) set->bits, 0, sizeof(uint)*sets->size_of_bits);
+ memset((char *) &set->next[0], 0, sizeof(set->next[0])*LAST_CHAR_CODE);
set->found_offset=0;
set->found_len=0;
set->table_offset= (uint) ~0;
In directory 'mariadb-10.0.2x/dbug', file 'dbug.c', there are several
instances of calls to bzero() (which is deprecated), the patch file
below replaces the calls to bzero() with memset().
--- dbug.c.orig 2015-07-02 10:33:47.000000000 -0700
+++ dbug.c 2015-07-02 10:36:27.000000000 -0700
@@ -342,7 +342,7 @@
sstdout->file= stdout;
sstderr->file= stderr;
pthread_mutex_init(&THR_LOCK_dbug, NULL);
- bzero(&init_settings, sizeof(init_settings));
+ memset(&init_settings, 0, sizeof(init_settings));
init_settings.out_file= sstderr;
init_settings.flags=OPEN_APPEND;
}
@@ -352,7 +352,7 @@
if (!(cs= *cs_ptr))
{
cs=(CODE_STATE*) DbugMalloc(sizeof(*cs));
- bzero((uchar*) cs,sizeof(*cs));
+ memset((uchar *) cs, 0, sizeof(*cs));
cs->process= db_process ? db_process : "dbug";
cs->func= "?func";
cs->file= "?file";
@@ -865,7 +865,7 @@
void _db_set_init_(const char *control)
{
CODE_STATE tmp_cs;
- bzero((uchar*) &tmp_cs, sizeof(tmp_cs));
+ memset((uchar *) &tmp_cs, 0, sizeof(tmp_cs));
tmp_cs.stack= &init_settings;
tmp_cs.process= db_process ? db_process : "dbug";
DbugParse(&tmp_cs, control);
@@ -1054,7 +1054,7 @@
int _db_explain_init_(char *buf, size_t len)
{
CODE_STATE cs;
- bzero((uchar*) &cs,sizeof(cs));
+ memset((uchar *) &cs, 0, sizeof(cs));
cs.stack=&init_settings;
return _db_explain_(&cs, buf, len);
}
@@ -1559,7 +1559,7 @@
struct settings *new_malloc;
new_malloc= (struct settings *) DbugMalloc(sizeof(struct settings));
- bzero(new_malloc, sizeof(*new_malloc));
+ memset(new_malloc, 0, sizeof(*new_malloc));
new_malloc->next= cs->stack;
cs->stack= new_malloc;
}
@@ -1637,7 +1637,7 @@
else
{
cs= &dummy_cs;
- bzero(cs, sizeof(*cs));
+ memset(cs, 0, sizeof(*cs));
}
cs->stack= &init_settings;
Questions, Comments, Suggestions?
I am attaching the patch file(s) to this bug report.
Bill Parker (wp02855 at gmail dot com)
Gliffy Diagrams
Attachments
Activity
- All
- Comments
- Work Log
- History
- Activity
- Transitions
I personally prefer bzero() — I think it has clearer semantics making this special case (setting to 0) easier to spot.
But as it's deprecated, I'd rather fix it in one of the headers (e.g. in my_global.h), like
or
static inline void bzero(void *s, size_t n) { memset(s, 0, n); }Instead of correcting all invocation of bzero() everywhere in the sources.