mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
row0sel.c Fix a memory freeing bug when a row which contains an externally stored long field in the middle of the row is fetched in a SELECT
srv0start.c Allow drive name followed by a ':' in a data file path ha_innobase.cc Allow drive name followed by a ':' in a data file path sql/ha_innobase.cc: Allow drive name followed by a ':' in a data file path innobase/srv/srv0start.c: Allow drive name followed by a ':' in a data file path innobase/row/row0sel.c: Fix a memory freeing bug when a row which contains an externally stored long field in the middle of the row is fetched in a SELECT
This commit is contained in:
@ -2103,6 +2103,7 @@ row_sel_store_mysql_rec(
|
||||
|
||||
if (extern_field_heap) {
|
||||
mem_heap_free(extern_field_heap);
|
||||
extern_field_heap = NULL;
|
||||
}
|
||||
} else {
|
||||
mysql_rec[templ->mysql_null_byte_offset] |=
|
||||
|
@ -141,21 +141,21 @@ srv_normalize_path_for_win(
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
Adds a slash or a backslash to the end of a string if it is missing. */
|
||||
Adds a slash or a backslash to the end of a string if it is missing
|
||||
and the string is not empty. */
|
||||
static
|
||||
char*
|
||||
srv_add_path_separator_if_needed(
|
||||
/*=============================*/
|
||||
/* out, own: string which has the separator */
|
||||
/* out, own: string which has the separator if the
|
||||
string is not empty */
|
||||
char* str) /* in: null-terminated character string */
|
||||
{
|
||||
char* out_str;
|
||||
|
||||
if (ut_strlen(str) == 0) {
|
||||
out_str = ut_malloc(2);
|
||||
sprintf(out_str, "%s", SRV_PATH_SEPARATOR);
|
||||
|
||||
return(out_str);
|
||||
return(str);
|
||||
}
|
||||
|
||||
if (str[ut_strlen(str) - 1] == SRV_PATH_SEPARATOR[0]) {
|
||||
|
@ -259,12 +259,15 @@ innobase_parse_data_file_paths_and_sizes(void)
|
||||
str = innobase_data_file_path;
|
||||
|
||||
/* First calculate the number of data files and check syntax:
|
||||
path:size[M];path:size[M]... */
|
||||
path:size[M];path:size[M]... . Note that a Windows path may
|
||||
contain a drive name and a ':'. */
|
||||
|
||||
while (*str != '\0') {
|
||||
path = str;
|
||||
|
||||
while (*str != ':' && *str != '\0') {
|
||||
while ((*str != ':' && *str != '\0')
|
||||
|| (*str == ':'
|
||||
&& (*(str + 1) == '\\' || *(str + 1) == '/'))) {
|
||||
str++;
|
||||
}
|
||||
|
||||
@ -335,7 +338,11 @@ innobase_parse_data_file_paths_and_sizes(void)
|
||||
while (*str != '\0') {
|
||||
path = str;
|
||||
|
||||
while (*str != ':' && *str != '\0') {
|
||||
/* Note that we must ignore the ':' in a Windows path */
|
||||
|
||||
while ((*str != ':' && *str != '\0')
|
||||
|| (*str == ':'
|
||||
&& (*(str + 1) == '\\' || *(str + 1) == '/'))) {
|
||||
str++;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user