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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
f2b0874f
Commit
f2b0874f
authored
Jun 18, 2005
by
jimw@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Clean up warnings and build problems on Windows. (Bug #11045)
parent
07892fe2
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
25 additions
and
29 deletions
+25
-29
VC++Files/sql/mysqld.dsp
VC++Files/sql/mysqld.dsp
+1
-1
sql/examples/ha_archive.cc
sql/examples/ha_archive.cc
+5
-5
sql/examples/ha_archive.h
sql/examples/ha_archive.h
+3
-3
sql/ha_federated.cc
sql/ha_federated.cc
+2
-7
sql/item_strfunc.cc
sql/item_strfunc.cc
+0
-1
sql/sql_acl.cc
sql/sql_acl.cc
+0
-2
sql/sql_insert.cc
sql/sql_insert.cc
+1
-1
sql/sql_lex.cc
sql/sql_lex.cc
+5
-4
sql/sql_lex.h
sql/sql_lex.h
+1
-1
sql/sql_union.cc
sql/sql_union.cc
+3
-1
sql/sql_yacc.yy
sql/sql_yacc.yy
+1
-1
sql/table.cc
sql/table.cc
+3
-2
No files found.
VC++Files/sql/mysqld.dsp
View file @
f2b0874f
...
@@ -84,7 +84,7 @@ BSC32=bscmake.exe
...
@@ -84,7 +84,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_debug\dbug.lib ..\lib_debug\vio.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\regex.lib ..\lib_debug\heap.lib ..\lib_debug\bdb.lib ..\lib_debug\innodb.lib ..\extra\yassl\
Release
\yassl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqld-debug.exe" /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib ..\lib_debug\dbug.lib ..\lib_debug\vio.lib ..\lib_debug\mysys.lib ..\lib_debug\strings.lib ..\lib_debug\regex.lib ..\lib_debug\heap.lib ..\lib_debug\bdb.lib ..\lib_debug\innodb.lib ..\extra\yassl\
Debug
\yassl.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../client_debug/mysqld-debug.exe" /pdbtype:sept
!ELSEIF "$(CFG)" == "mysqld - Win32 nt"
!ELSEIF "$(CFG)" == "mysqld - Win32 nt"
...
...
sql/examples/ha_archive.cc
View file @
f2b0874f
...
@@ -259,7 +259,7 @@ int ha_archive::write_data_header(gzFile file_to_write)
...
@@ -259,7 +259,7 @@ int ha_archive::write_data_header(gzFile file_to_write)
This method reads the header of a meta file and returns whether or not it was successful.
This method reads the header of a meta file and returns whether or not it was successful.
*rows will contain the current number of rows in the data file upon success.
*rows will contain the current number of rows in the data file upon success.
*/
*/
int
ha_archive
::
read_meta_file
(
File
meta_file
,
ulonglong
*
rows
)
int
ha_archive
::
read_meta_file
(
File
meta_file
,
ha_rows
*
rows
)
{
{
uchar
meta_buffer
[
META_BUFFER_SIZE
];
uchar
meta_buffer
[
META_BUFFER_SIZE
];
ulonglong
check_point
;
ulonglong
check_point
;
...
@@ -273,7 +273,7 @@ int ha_archive::read_meta_file(File meta_file, ulonglong *rows)
...
@@ -273,7 +273,7 @@ int ha_archive::read_meta_file(File meta_file, ulonglong *rows)
/*
/*
Parse out the meta data, we ignore version at the moment
Parse out the meta data, we ignore version at the moment
*/
*/
*
rows
=
uint8korr
(
meta_buffer
+
2
);
*
rows
=
(
ha_rows
)
uint8korr
(
meta_buffer
+
2
);
check_point
=
uint8korr
(
meta_buffer
+
10
);
check_point
=
uint8korr
(
meta_buffer
+
10
);
DBUG_PRINT
(
"ha_archive::read_meta_file"
,
(
"Check %d"
,
(
uint
)
meta_buffer
[
0
]));
DBUG_PRINT
(
"ha_archive::read_meta_file"
,
(
"Check %d"
,
(
uint
)
meta_buffer
[
0
]));
...
@@ -296,7 +296,7 @@ int ha_archive::read_meta_file(File meta_file, ulonglong *rows)
...
@@ -296,7 +296,7 @@ int ha_archive::read_meta_file(File meta_file, ulonglong *rows)
By setting dirty you say whether or not the file represents the actual state of the data file.
By setting dirty you say whether or not the file represents the actual state of the data file.
Upon ::open() we set to dirty, and upon ::close() we set to clean.
Upon ::open() we set to dirty, and upon ::close() we set to clean.
*/
*/
int
ha_archive
::
write_meta_file
(
File
meta_file
,
ulonglong
rows
,
bool
dirty
)
int
ha_archive
::
write_meta_file
(
File
meta_file
,
ha_rows
rows
,
bool
dirty
)
{
{
uchar
meta_buffer
[
META_BUFFER_SIZE
];
uchar
meta_buffer
[
META_BUFFER_SIZE
];
ulonglong
check_point
=
0
;
//Reserved for the future
ulonglong
check_point
=
0
;
//Reserved for the future
...
@@ -787,7 +787,7 @@ int ha_archive::rnd_pos(byte * buf, byte *pos)
...
@@ -787,7 +787,7 @@ int ha_archive::rnd_pos(byte * buf, byte *pos)
DBUG_ENTER
(
"ha_archive::rnd_pos"
);
DBUG_ENTER
(
"ha_archive::rnd_pos"
);
statistic_increment
(
table
->
in_use
->
status_var
.
ha_read_rnd_next_count
,
statistic_increment
(
table
->
in_use
->
status_var
.
ha_read_rnd_next_count
,
&
LOCK_status
);
&
LOCK_status
);
current_position
=
my_get_ptr
(
pos
,
ref_length
);
current_position
=
(
z_off_t
)
my_get_ptr
(
pos
,
ref_length
);
(
void
)
gzseek
(
archive
,
current_position
,
SEEK_SET
);
(
void
)
gzseek
(
archive
,
current_position
,
SEEK_SET
);
DBUG_RETURN
(
get_row
(
archive
,
buf
));
DBUG_RETURN
(
get_row
(
archive
,
buf
));
...
@@ -801,7 +801,7 @@ int ha_archive::repair(THD* thd, HA_CHECK_OPT* check_opt)
...
@@ -801,7 +801,7 @@ int ha_archive::repair(THD* thd, HA_CHECK_OPT* check_opt)
{
{
int
rc
;
int
rc
;
byte
*
buf
;
byte
*
buf
;
ulonglong
rows_recorded
=
0
;
ha_rows
rows_recorded
=
0
;
gzFile
rebuild_file
;
// Archive file we are working with
gzFile
rebuild_file
;
// Archive file we are working with
File
meta_file
;
// Meta file we use
File
meta_file
;
// Meta file we use
char
data_file_name
[
FN_REFLEN
];
char
data_file_name
[
FN_REFLEN
];
...
...
sql/examples/ha_archive.h
View file @
f2b0874f
...
@@ -36,7 +36,7 @@ typedef struct st_archive_share {
...
@@ -36,7 +36,7 @@ typedef struct st_archive_share {
gzFile
archive_write
;
/* Archive file we are working with */
gzFile
archive_write
;
/* Archive file we are working with */
bool
dirty
;
/* Flag for if a flush should occur */
bool
dirty
;
/* Flag for if a flush should occur */
bool
crashed
;
/* Meta file is crashed */
bool
crashed
;
/* Meta file is crashed */
ulonglong
rows_recorded
;
/* Number of rows in tables */
ha_rows
rows_recorded
;
/* Number of rows in tables */
}
ARCHIVE_SHARE
;
}
ARCHIVE_SHARE
;
/*
/*
...
@@ -88,8 +88,8 @@ class ha_archive: public handler
...
@@ -88,8 +88,8 @@ class ha_archive: public handler
int
rnd_next
(
byte
*
buf
);
int
rnd_next
(
byte
*
buf
);
int
rnd_pos
(
byte
*
buf
,
byte
*
pos
);
int
rnd_pos
(
byte
*
buf
,
byte
*
pos
);
int
get_row
(
gzFile
file_to_read
,
byte
*
buf
);
int
get_row
(
gzFile
file_to_read
,
byte
*
buf
);
int
read_meta_file
(
File
meta_file
,
ulonglong
*
rows
);
int
read_meta_file
(
File
meta_file
,
ha_rows
*
rows
);
int
write_meta_file
(
File
meta_file
,
ulonglong
rows
,
bool
dirty
);
int
write_meta_file
(
File
meta_file
,
ha_rows
rows
,
bool
dirty
);
ARCHIVE_SHARE
*
get_share
(
const
char
*
table_name
,
TABLE
*
table
);
ARCHIVE_SHARE
*
get_share
(
const
char
*
table_name
,
TABLE
*
table
);
int
free_share
(
ARCHIVE_SHARE
*
share
);
int
free_share
(
ARCHIVE_SHARE
*
share
);
bool
auto_repair
()
const
{
return
1
;
}
// For the moment we just do this
bool
auto_repair
()
const
{
return
1
;
}
// For the moment we just do this
...
...
sql/ha_federated.cc
View file @
f2b0874f
...
@@ -842,7 +842,7 @@ static FEDERATED_SHARE *get_share(const char *table_name, TABLE *table)
...
@@ -842,7 +842,7 @@ static FEDERATED_SHARE *get_share(const char *table_name, TABLE *table)
query
.
length
(
0
);
query
.
length
(
0
);
uint
table_name_length
,
table_base_name_length
;
uint
table_name_length
,
table_base_name_length
;
char
*
tmp_table_name
,
*
t
mp_table_base_name
,
*
t
able_base_name
,
*
select_query
;
char
*
tmp_table_name
,
*
table_base_name
,
*
select_query
;
/* share->table_name has the file location - we want the table's name! */
/* share->table_name has the file location - we want the table's name! */
table_base_name
=
(
char
*
)
table
->
s
->
table_name
;
table_base_name
=
(
char
*
)
table
->
s
->
table_name
;
...
@@ -963,7 +963,6 @@ const char **ha_federated::bas_ext() const
...
@@ -963,7 +963,6 @@ const char **ha_federated::bas_ext() const
int
ha_federated
::
open
(
const
char
*
name
,
int
mode
,
uint
test_if_locked
)
int
ha_federated
::
open
(
const
char
*
name
,
int
mode
,
uint
test_if_locked
)
{
{
int
rc
;
DBUG_ENTER
(
"ha_federated::open"
);
DBUG_ENTER
(
"ha_federated::open"
);
if
(
!
(
share
=
get_share
(
name
,
table
)))
if
(
!
(
share
=
get_share
(
name
,
table
)))
...
@@ -1076,7 +1075,7 @@ int ha_federated::write_row(byte *buf)
...
@@ -1076,7 +1075,7 @@ int ha_federated::write_row(byte *buf)
{
{
uint
x
=
0
,
num_fields
=
0
;
uint
x
=
0
,
num_fields
=
0
;
Field
**
field
;
Field
**
field
;
ulong
current_query_id
=
1
;
query_id_it
current_query_id
=
1
;
ulong
tmp_query_id
=
1
;
ulong
tmp_query_id
=
1
;
uint
all_fields_have_same_query_id
=
1
;
uint
all_fields_have_same_query_id
=
1
;
...
@@ -1471,8 +1470,6 @@ int ha_federated::index_read_idx(byte *buf, uint index, const byte *key,
...
@@ -1471,8 +1470,6 @@ int ha_federated::index_read_idx(byte *buf, uint index, const byte *key,
__attribute__
((
unused
)))
__attribute__
((
unused
)))
{
{
char
index_value
[
IO_SIZE
];
char
index_value
[
IO_SIZE
];
char
key_value
[
IO_SIZE
];
char
test_value
[
IO_SIZE
];
String
index_string
(
index_value
,
sizeof
(
index_value
),
&
my_charset_bin
);
String
index_string
(
index_value
,
sizeof
(
index_value
),
&
my_charset_bin
);
index_string
.
length
(
0
);
index_string
.
length
(
0
);
uint
keylen
;
uint
keylen
;
...
@@ -1538,7 +1535,6 @@ int ha_federated::index_read_idx(byte *buf, uint index, const byte *key,
...
@@ -1538,7 +1535,6 @@ int ha_federated::index_read_idx(byte *buf, uint index, const byte *key,
/* Initialized at each key walk (called multiple times unlike rnd_init()) */
/* Initialized at each key walk (called multiple times unlike rnd_init()) */
int
ha_federated
::
index_init
(
uint
keynr
)
int
ha_federated
::
index_init
(
uint
keynr
)
{
{
int
error
;
DBUG_ENTER
(
"ha_federated::index_init"
);
DBUG_ENTER
(
"ha_federated::index_init"
);
DBUG_PRINT
(
"info"
,
DBUG_PRINT
(
"info"
,
(
"table: '%s' key: %d"
,
table
->
s
->
table_name
,
keynr
));
(
"table: '%s' key: %d"
,
table
->
s
->
table_name
,
keynr
));
...
@@ -1570,7 +1566,6 @@ int ha_federated::index_next(byte *buf)
...
@@ -1570,7 +1566,6 @@ int ha_federated::index_next(byte *buf)
int
ha_federated
::
rnd_init
(
bool
scan
)
int
ha_federated
::
rnd_init
(
bool
scan
)
{
{
DBUG_ENTER
(
"ha_federated::rnd_init"
);
DBUG_ENTER
(
"ha_federated::rnd_init"
);
int
num_fields
,
rows
;
/*
/*
This 'scan' flag is incredibly important for this handler to work
This 'scan' flag is incredibly important for this handler to work
...
...
sql/item_strfunc.cc
View file @
f2b0874f
...
@@ -446,7 +446,6 @@ String *Item_func_des_decrypt::val_str(String *str)
...
@@ -446,7 +446,6 @@ String *Item_func_des_decrypt::val_str(String *str)
{
{
DBUG_ASSERT
(
fixed
==
1
);
DBUG_ASSERT
(
fixed
==
1
);
#ifdef HAVE_OPENSSL
#ifdef HAVE_OPENSSL
DES_key_schedule
ks1
,
ks2
,
ks3
;
DES_cblock
ivec
;
DES_cblock
ivec
;
struct
st_des_keyblock
keyblock
;
struct
st_des_keyblock
keyblock
;
struct
st_des_keyschedule
keyschedule
;
struct
st_des_keyschedule
keyschedule
;
...
...
sql/sql_acl.cc
View file @
f2b0874f
...
@@ -2476,7 +2476,6 @@ static int replace_routine_table(THD *thd, GRANT_NAME *grant_name,
...
@@ -2476,7 +2476,6 @@ static int replace_routine_table(THD *thd, GRANT_NAME *grant_name,
int
old_row_exists
=
1
;
int
old_row_exists
=
1
;
int
error
=
0
;
int
error
=
0
;
ulong
store_proc_rights
;
ulong
store_proc_rights
;
byte
*
key
;
DBUG_ENTER
(
"replace_routine_table"
);
DBUG_ENTER
(
"replace_routine_table"
);
if
(
!
initialized
)
if
(
!
initialized
)
...
@@ -3216,7 +3215,6 @@ my_bool grant_init(THD *org_thd)
...
@@ -3216,7 +3215,6 @@ my_bool grant_init(THD *org_thd)
do
do
{
{
GRANT_NAME
*
mem_check
;
GRANT_NAME
*
mem_check
;
longlong
proc_type
;
HASH
*
hash
;
HASH
*
hash
;
if
(
!
(
mem_check
=
new
GRANT_NAME
(
p_table
)))
if
(
!
(
mem_check
=
new
GRANT_NAME
(
p_table
)))
{
{
...
...
sql/sql_insert.cc
View file @
f2b0874f
...
@@ -192,7 +192,7 @@ static int check_update_fields(THD *thd, TABLE_LIST *insert_table_list,
...
@@ -192,7 +192,7 @@ static int check_update_fields(THD *thd, TABLE_LIST *insert_table_list,
List
<
Item
>
&
update_fields
)
List
<
Item
>
&
update_fields
)
{
{
TABLE
*
table
=
insert_table_list
->
table
;
TABLE
*
table
=
insert_table_list
->
table
;
ulong
timestamp_query_id
;
query_id_it
timestamp_query_id
;
LINT_INIT
(
timestamp_query_id
);
LINT_INIT
(
timestamp_query_id
);
/*
/*
...
...
sql/sql_lex.cc
View file @
f2b0874f
...
@@ -1755,12 +1755,13 @@ bool st_lex::need_correct_ident()
...
@@ -1755,12 +1755,13 @@ bool st_lex::need_correct_ident()
void
st_select_lex_unit
::
set_limit
(
SELECT_LEX
*
sl
)
void
st_select_lex_unit
::
set_limit
(
SELECT_LEX
*
sl
)
{
{
ulonglong
select_limit_val
;
ha_rows
select_limit_val
;
DBUG_ASSERT
(
!
thd
->
current_arena
->
is_stmt_prepare
());
DBUG_ASSERT
(
!
thd
->
current_arena
->
is_stmt_prepare
());
select_limit_val
=
sl
->
select_limit
?
sl
->
select_limit
->
val_uint
()
:
select_limit_val
=
(
ha_rows
)(
sl
->
select_limit
?
sl
->
select_limit
->
val_uint
()
:
HA_POS_ERROR
;
HA_POS_ERROR
);
offset_limit_cnt
=
sl
->
offset_limit
?
sl
->
offset_limit
->
val_uint
()
:
ULL
(
0
);
offset_limit_cnt
=
(
ha_rows
)(
sl
->
offset_limit
?
sl
->
offset_limit
->
val_uint
()
:
ULL
(
0
));
select_limit_cnt
=
select_limit_val
+
offset_limit_cnt
;
select_limit_cnt
=
select_limit_val
+
offset_limit_cnt
;
if
(
select_limit_cnt
<
select_limit_val
)
if
(
select_limit_cnt
<
select_limit_val
)
select_limit_cnt
=
HA_POS_ERROR
;
// no limit
select_limit_cnt
=
HA_POS_ERROR
;
// no limit
...
...
sql/sql_lex.h
View file @
f2b0874f
...
@@ -304,7 +304,7 @@ class st_select_lex_node {
...
@@ -304,7 +304,7 @@ class st_select_lex_node {
*
link_next
,
**
link_prev
;
/* list of whole SELECT_LEX */
*
link_next
,
**
link_prev
;
/* list of whole SELECT_LEX */
public:
public:
ulong
long
options
;
ulong
options
;
/*
/*
result of this query can't be cached, bit field, can be :
result of this query can't be cached, bit field, can be :
UNCACHEABLE_DEPENDENT
UNCACHEABLE_DEPENDENT
...
...
sql/sql_union.cc
View file @
f2b0874f
...
@@ -448,7 +448,9 @@ bool st_select_lex_unit::exec()
...
@@ -448,7 +448,9 @@ bool st_select_lex_unit::exec()
table
->
no_keyread
=
1
;
table
->
no_keyread
=
1
;
}
}
res
=
sl
->
join
->
error
;
res
=
sl
->
join
->
error
;
offset_limit_cnt
=
sl
->
offset_limit
?
sl
->
offset_limit
->
val_uint
()
:
0
;
offset_limit_cnt
=
(
ha_rows
)(
sl
->
offset_limit
?
sl
->
offset_limit
->
val_uint
()
:
0
);
if
(
!
res
)
if
(
!
res
)
{
{
examined_rows
+=
thd
->
examined_row_count
;
examined_rows
+=
thd
->
examined_row_count
;
...
...
sql/sql_yacc.yy
View file @
f2b0874f
...
@@ -5641,7 +5641,7 @@ delete_limit_clause:
...
@@ -5641,7 +5641,7 @@ delete_limit_clause:
ulong_num:
ulong_num:
NUM { int error; $$= (ulong) my_strtoll10($1.str, (char**) 0, &error); }
NUM { int error; $$= (ulong) my_strtoll10($1.str, (char**) 0, &error); }
| HEX_NUM {
int error;
$$= (ulong) strtol($1.str, (char**) 0, 16); }
| HEX_NUM { $$= (ulong) strtol($1.str, (char**) 0, 16); }
| LONG_NUM { int error; $$= (ulong) my_strtoll10($1.str, (char**) 0, &error); }
| LONG_NUM { int error; $$= (ulong) my_strtoll10($1.str, (char**) 0, &error); }
| ULONGLONG_NUM { int error; $$= (ulong) my_strtoll10($1.str, (char**) 0, &error); }
| ULONGLONG_NUM { int error; $$= (ulong) my_strtoll10($1.str, (char**) 0, &error); }
| DECIMAL_NUM { int error; $$= (ulong) my_strtoll10($1.str, (char**) 0, &error); }
| DECIMAL_NUM { int error; $$= (ulong) my_strtoll10($1.str, (char**) 0, &error); }
...
...
sql/table.cc
View file @
f2b0874f
...
@@ -745,8 +745,9 @@ int openfrm(THD *thd, const char *name, const char *alias, uint db_stat,
...
@@ -745,8 +745,9 @@ int openfrm(THD *thd, const char *name, const char *alias, uint db_stat,
error.
error.
*/
*/
keyinfo
->
key_length
-=
(
key_part
->
length
-
field
->
key_length
());
keyinfo
->
key_length
-=
(
key_part
->
length
-
field
->
key_length
());
key_part
->
store_length
-=
(
key_part
->
length
-
field
->
key_length
());
key_part
->
store_length
-=
(
uint16
)(
key_part
->
length
-
key_part
->
length
=
field
->
key_length
();
field
->
key_length
());
key_part
->
length
=
(
uint16
)
field
->
key_length
();
sql_print_error
(
"Found wrong key definition in %s; Please do
\"
ALTER TABLE '%s' FORCE
\"
to fix it!"
,
name
,
share
->
table_name
);
sql_print_error
(
"Found wrong key definition in %s; Please do
\"
ALTER TABLE '%s' FORCE
\"
to fix it!"
,
name
,
share
->
table_name
);
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_ERROR
,
push_warning_printf
(
thd
,
MYSQL_ERROR
::
WARN_LEVEL_ERROR
,
ER_CRASHED_ON_USAGE
,
ER_CRASHED_ON_USAGE
,
...
...
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