Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
6d280ac1
Commit
6d280ac1
authored
Jan 15, 2005
by
monty@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed possible access to unintialized memory in filesort when using many buffers
parent
46e44429
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
14 deletions
+38
-14
include/my_sys.h
include/my_sys.h
+1
-0
mysys/mf_iocache.c
mysys/mf_iocache.c
+35
-14
sql/filesort.cc
sql/filesort.cc
+2
-0
No files found.
include/my_sys.h
View file @
6d280ac1
...
...
@@ -671,6 +671,7 @@ extern int init_io_cache(IO_CACHE *info,File file,uint cachesize,
extern
my_bool
reinit_io_cache
(
IO_CACHE
*
info
,
enum
cache_type
type
,
my_off_t
seek_offset
,
pbool
use_async_io
,
pbool
clear_cache
);
extern
void
setup_io_cache
(
IO_CACHE
*
info
);
extern
int
_my_b_read
(
IO_CACHE
*
info
,
byte
*
Buffer
,
uint
Count
);
#ifdef THREAD
extern
int
_my_b_read_r
(
IO_CACHE
*
info
,
byte
*
Buffer
,
uint
Count
);
...
...
mysys/mf_iocache.c
View file @
6d280ac1
...
...
@@ -71,9 +71,40 @@ static void my_aiowait(my_aio_result *result);
#define IO_ROUND_UP(X) (((X)+IO_SIZE-1) & ~(IO_SIZE-1))
#define IO_ROUND_DN(X) ( (X) & ~(IO_SIZE-1))
/*
Setup internal pointers inside IO_CACHE
SYNOPSIS
setup_io_cache()
info IO_CACHE handler
NOTES
This is called on automaticly on init or reinit of IO_CACHE
It must be called externally if one moves or copies an IO_CACHE
object.
*/
void
setup_io_cache
(
IO_CACHE
*
info
)
{
/* Ensure that my_b_tell() and my_b_bytes_in_cache works */
if
(
info
->
type
==
WRITE_CACHE
)
{
info
->
current_pos
=
&
info
->
write_pos
;
info
->
current_end
=
&
info
->
write_end
;
}
else
{
info
->
current_pos
=
&
info
->
read_pos
;
info
->
current_end
=
&
info
->
read_end
;
}
}
static
void
init_functions
(
IO_CACHE
*
info
,
enum
cache_type
type
)
init_functions
(
IO_CACHE
*
info
)
{
enum
cache_type
type
=
info
->
type
;
switch
(
type
)
{
case
READ_NET
:
/*
...
...
@@ -97,17 +128,7 @@ init_functions(IO_CACHE* info, enum cache_type type)
info
->
write_function
=
_my_b_write
;
}
/* Ensure that my_b_tell() and my_b_bytes_in_cache works */
if
(
type
==
WRITE_CACHE
)
{
info
->
current_pos
=
&
info
->
write_pos
;
info
->
current_end
=
&
info
->
write_end
;
}
else
{
info
->
current_pos
=
&
info
->
read_pos
;
info
->
current_end
=
&
info
->
read_end
;
}
setup_io_cache
(
info
);
}
/*
...
...
@@ -211,7 +232,7 @@ int init_io_cache(IO_CACHE *info, File file, uint cachesize,
/* End_of_file may be changed by user later */
info
->
end_of_file
=
end_of_file
;
info
->
error
=
0
;
init_functions
(
info
,
type
);
init_functions
(
info
);
#ifdef HAVE_AIOWAIT
if
(
use_async_io
&&
!
my_disable_async_io
)
{
...
...
@@ -333,7 +354,7 @@ my_bool reinit_io_cache(IO_CACHE *info, enum cache_type type,
}
info
->
type
=
type
;
info
->
error
=
0
;
init_functions
(
info
,
type
);
init_functions
(
info
);
#ifdef HAVE_AIOWAIT
if
(
use_async_io
&&
!
my_disable_async_io
&&
...
...
sql/filesort.cc
View file @
6d280ac1
...
...
@@ -680,6 +680,8 @@ int merge_many_buff(SORTPARAM *param, uchar *sort_buffer,
if
(
flush_io_cache
(
to_file
))
break
;
/* purecov: inspected */
temp
=
from_file
;
from_file
=
to_file
;
to_file
=
temp
;
setup_io_cache
(
from_file
);
setup_io_cache
(
to_file
);
*
maxbuffer
=
(
uint
)
(
lastbuff
-
buffpek
)
-
1
;
}
close_cached_file
(
to_file
);
// This holds old result
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment