Commit 335dda93 authored by heikki@donna.mysql.fi's avatar heikki@donna.mysql.fi
Browse files

row0sel.c Fix a memory freeing bug when a row which contains an externally...

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
parent bfbc3252
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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] |=
+5 −5
Original line number Diff line number Diff line
@@ -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]) {
+10 −3
Original line number Diff line number Diff line
@@ -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++;
		}