Skip to content

Commit 0d3aefc

Browse files
author
iggy@recycle.(none)
committed
Merge bk-internal.mysql.com:/home/bk/mysql-5.1-new-maint
into recycle.(none):/src/bug23736/my51-bug23736
2 parents a0c2fae + 13398cc commit 0d3aefc

File tree

4 files changed

+29
-34
lines changed

4 files changed

+29
-34
lines changed

client/mysqlbinlog.cc

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -158,11 +158,7 @@ class Load_log_processor
158158

159159
public:
160160
Load_log_processor() {}
161-
~Load_log_processor()
162-
{
163-
destroy();
164-
delete_dynamic(&file_names);
165-
}
161+
~Load_log_processor() {}
166162

167163
int init()
168164
{
@@ -182,20 +178,22 @@ class Load_log_processor
182178
target_dir_name_len= strlen(target_dir_name);
183179
}
184180
void destroy()
181+
{
182+
File_name_record *ptr= (File_name_record *)file_names.buffer;
183+
File_name_record *end= ptr + file_names.elements;
184+
for (; ptr < end; ptr++)
185185
{
186-
File_name_record *ptr= (File_name_record *)file_names.buffer;
187-
File_name_record *end= ptr + file_names.elements;
188-
for (; ptr<end; ptr++)
186+
if (ptr->fname)
189187
{
190-
if (ptr->fname)
191-
{
192-
my_free(ptr->fname, MYF(MY_WME));
193-
delete ptr->event;
194-
bzero((char *)ptr, sizeof(File_name_record));
195-
}
188+
my_free(ptr->fname, MYF(MY_WME));
189+
delete ptr->event;
190+
bzero((char *)ptr, sizeof(File_name_record));
196191
}
197192
}
198193

194+
delete_dynamic(&file_names);
195+
}
196+
199197
/*
200198
Obtain Create_file event for LOAD DATA statement by its file_id.
201199
@@ -1577,6 +1575,7 @@ int main(int argc, char** argv)
15771575
cleanup();
15781576
free_defaults(defaults_argv);
15791577
my_free_open_file_info();
1578+
load_processor.destroy();
15801579
/* We cannot free DBUG, it is used in global destructors after exit(). */
15811580
my_end((info_flag ? MY_CHECK_ERROR : 0) | MY_DONT_FREE_DBUG);
15821581

include/my_sys.h

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -312,23 +312,24 @@ struct st_my_file_info
312312

313313
extern struct st_my_file_info *my_file_info;
314314

315+
typedef struct st_dynamic_array
316+
{
317+
char *buffer;
318+
uint elements,max_element;
319+
uint alloc_increment;
320+
uint size_of_element;
321+
} DYNAMIC_ARRAY;
322+
315323
typedef struct st_my_tmpdir
316324
{
325+
DYNAMIC_ARRAY full_list;
317326
char **list;
318327
uint cur, max;
319328
#ifdef THREAD
320329
pthread_mutex_t mutex;
321330
#endif
322331
} MY_TMPDIR;
323332

324-
typedef struct st_dynamic_array
325-
{
326-
char *buffer;
327-
uint elements,max_element;
328-
uint alloc_increment;
329-
uint size_of_element;
330-
} DYNAMIC_ARRAY;
331-
332333
typedef struct st_dynamic_string
333334
{
334335
char *str;

mysys/array.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,6 @@
1515

1616
/* Handling of arrays that can grow dynamicly. */
1717

18-
#if defined(WIN32) || defined(__WIN__)
19-
#undef SAFEMALLOC /* Problems with threads */
20-
#endif
21-
2218
#include "mysys_priv.h"
2319
#include "m_string.h"
2420

mysys/mf_tempdir.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,11 @@ my_bool init_tmpdir(MY_TMPDIR *tmpdir, const char *pathlist)
2626
{
2727
char *end, *copy;
2828
char buff[FN_REFLEN];
29-
DYNAMIC_ARRAY t_arr;
3029
DBUG_ENTER("init_tmpdir");
3130
DBUG_PRINT("enter", ("pathlist: %s", pathlist ? pathlist : "NULL"));
3231

3332
pthread_mutex_init(&tmpdir->mutex, MY_MUTEX_INIT_FAST);
34-
if (my_init_dynamic_array(&t_arr, sizeof(char*), 1, 5))
33+
if (my_init_dynamic_array(&tmpdir->full_list, sizeof(char*), 1, 5))
3534
goto err;
3635
if (!pathlist || !pathlist[0])
3736
{
@@ -53,19 +52,19 @@ my_bool init_tmpdir(MY_TMPDIR *tmpdir, const char *pathlist)
5352
strmake(buff, pathlist, (uint) (end-pathlist));
5453
length= cleanup_dirname(buff, buff);
5554
if (!(copy= my_strndup(buff, length, MYF(MY_WME))) ||
56-
insert_dynamic(&t_arr, (gptr) &copy))
55+
insert_dynamic(&tmpdir->full_list, (gptr) &copy))
5756
DBUG_RETURN(TRUE);
5857
pathlist=end+1;
5958
}
6059
while (*end);
61-
freeze_size(&t_arr);
62-
tmpdir->list=(char **)t_arr.buffer;
63-
tmpdir->max=t_arr.elements-1;
60+
freeze_size(&tmpdir->full_list);
61+
tmpdir->list=(char **)tmpdir->full_list.buffer;
62+
tmpdir->max=tmpdir->full_list.elements-1;
6463
tmpdir->cur=0;
6564
DBUG_RETURN(FALSE);
6665

6766
err:
68-
delete_dynamic(&t_arr); /* Safe to free */
67+
delete_dynamic(&tmpdir->full_list); /* Safe to free */
6968
pthread_mutex_destroy(&tmpdir->mutex);
7069
DBUG_RETURN(TRUE);
7170
}
@@ -88,7 +87,7 @@ void free_tmpdir(MY_TMPDIR *tmpdir)
8887
uint i;
8988
for (i=0; i<=tmpdir->max; i++)
9089
my_free(tmpdir->list[i], MYF(0));
91-
my_free((gptr)tmpdir->list, MYF(0));
90+
delete_dynamic(&tmpdir->full_list);
9291
pthread_mutex_destroy(&tmpdir->mutex);
9392
}
9493

0 commit comments

Comments
 (0)