Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
ac978ea8
Commit
ac978ea8
authored
Jun 22, 2011
by
Piotr Caban
Committed by
Alexandre Julliard
Jun 22, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msvcp90: Added locale::_Locimp class stub.
parent
198162fb
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
160 additions
and
29 deletions
+160
-29
locale.c
dlls/msvcp90/locale.c
+131
-0
msvcp90.spec
dlls/msvcp90/msvcp90.spec
+29
-29
No files found.
dlls/msvcp90/locale.c
View file @
ac978ea8
...
...
@@ -26,6 +26,8 @@
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
msvcp90
);
typedef
int
category
;
typedef
struct
_locale_id
{
MSVCP_size_t
id
;
}
locale_id
;
...
...
@@ -35,9 +37,22 @@ typedef struct _locale_facet {
MSVCP_size_t
refs
;
}
locale_facet
;
typedef
struct
_locale__Locimp
{
locale_facet
facet
;
locale_facet
**
facetvec
;
MSVCP_size_t
facet_cnt
;
category
catmask
;
MSVCP_bool
transparent
;
basic_string_char
name
;
}
locale__Locimp
;
/* ?_Id_cnt@id@locale@std@@0HA */
int
locale_id__Id_cnt
=
0
;
/* ?_Clocptr@_Locimp@locale@std@@0PAV123@A */
/* ?_Clocptr@_Locimp@locale@std@@0PEAV123@EA */
locale__Locimp
*
locale__Locimp__Clocptr
;
static
const
vtable_ptr
MSVCP_locale_facet_vtable
[];
/* ??0id@locale@std@@QAE@I@Z */
...
...
@@ -150,3 +165,119 @@ MSVCP_size_t __cdecl locale_facet__Getcat(const locale_facet **facet, const /*lo
static
const
vtable_ptr
MSVCP_locale_facet_vtable
[]
=
{
(
vtable_ptr
)
THISCALL_NAME
(
MSVCP_locale_facet_vector_dtor
)
};
/* ??_F_Locimp@locale@std@@QAEXXZ */
/* ??_F_Locimp@locale@std@@QEAAXXZ */
DEFINE_THISCALL_WRAPPER
(
locale__Locimp_ctor
,
4
)
locale__Locimp
*
__thiscall
locale__Locimp_ctor
(
locale__Locimp
*
this
)
{
FIXME
(
"(%p) stub
\n
"
,
this
);
return
NULL
;
}
/* ??0_Locimp@locale@std@@AAE@_N@Z */
/* ??0_Locimp@locale@std@@AEAA@_N@Z */
DEFINE_THISCALL_WRAPPER
(
locale__Locimp_ctor_transparent
,
8
)
locale__Locimp
*
__thiscall
locale__Locimp_ctor_transparent
(
locale__Locimp
*
this
,
MSVCP_bool
transparent
)
{
FIXME
(
"(%p %d) stub
\n
"
,
this
,
transparent
);
return
NULL
;
}
/* ??0_Locimp@locale@std@@AAE@ABV012@@Z */
/* ??0_Locimp@locale@std@@AEAA@AEBV012@@Z */
/* ?_Locimp_ctor@_Locimp@locale@std@@CAXPAV123@ABV123@@Z */
/* ?_Locimp_ctor@_Locimp@locale@std@@CAXPEAV123@AEBV123@@Z */
DEFINE_THISCALL_WRAPPER
(
locale__Locimp_copy_ctor
,
8
)
locale__Locimp
*
__thiscall
locale__Locimp_copy_ctor
(
locale__Locimp
*
this
,
const
locale__Locimp
*
copy
)
{
FIXME
(
"(%p %p) stub
\n
"
,
this
,
copy
);
return
NULL
;
}
/* ??1_Locimp@locale@std@@MAE@XZ */
/* ??1_Locimp@locale@std@@MEAA@XZ */
/* ?_Locimp_dtor@_Locimp@locale@std@@CAXPAV123@@Z */
/* ?_Locimp_dtor@_Locimp@locale@std@@CAXPEAV123@@Z */
DEFINE_THISCALL_WRAPPER
(
locale__Locimp_dtor
,
4
)
void
__thiscall
locale__Locimp_dtor
(
locale__Locimp
*
this
)
{
FIXME
(
"(%p) stub
\n
"
,
this
);
}
DEFINE_THISCALL_WRAPPER
(
MSVCP_locale__Locimp_vector_dtor
,
8
)
locale__Locimp
*
__thiscall
MSVCP_locale__Locimp_vector_dtor
(
locale__Locimp
*
this
,
unsigned
int
flags
)
{
TRACE
(
"(%p %x) stub
\n
"
,
this
,
flags
);
if
(
flags
&
2
)
{
/* we have an array, with the number of elements stored before the first object */
int
i
,
*
ptr
=
(
int
*
)
this
-
1
;
for
(
i
=*
ptr
-
1
;
i
>=
0
;
i
--
)
locale__Locimp_dtor
(
this
+
i
);
MSVCRT_operator_delete
(
ptr
);
}
else
{
locale__Locimp_dtor
(
this
);
if
(
flags
&
1
)
MSVCRT_operator_delete
(
this
);
}
return
this
;
}
/* ?_Locimp_Addfac@_Locimp@locale@std@@CAXPAV123@PAVfacet@23@I@Z */
/* ?_Locimp_Addfac@_Locimp@locale@std@@CAXPEAV123@PEAVfacet@23@_K@Z */
void
__cdecl
locale__Locimp__Locimp_Addfac
(
locale__Locimp
*
locimp
,
locale_facet
*
facet
,
MSVCP_size_t
id
)
{
FIXME
(
"(%p %p %lu) stub
\n
"
,
locimp
,
facet
,
id
);
}
/* ?_Addfac@_Locimp@locale@std@@AAEXPAVfacet@23@I@Z */
/* ?_Addfac@_Locimp@locale@std@@AEAAXPEAVfacet@23@_K@Z */
DEFINE_THISCALL_WRAPPER
(
locale__Locimp__Addfac
,
12
)
void
__thiscall
locale__Locimp__Addfac
(
locale__Locimp
*
this
,
locale_facet
*
facet
,
MSVCP_size_t
id
)
{
FIXME
(
"(%p %p %lu) stub
\n
"
,
this
,
facet
,
id
);
}
/* ?_Clocptr_func@_Locimp@locale@std@@CAAAPAV123@XZ */
/* ?_Clocptr_func@_Locimp@locale@std@@CAAEAPEAV123@XZ */
locale__Locimp
**
__cdecl
locale__Locimp__Clocptr_func
(
void
)
{
FIXME
(
"stub
\n
"
);
return
NULL
;
}
/* ?_Makeloc@_Locimp@locale@std@@CAPAV123@ABV_Locinfo@3@HPAV123@PBV23@@Z */
/* ?_Makeloc@_Locimp@locale@std@@CAPEAV123@AEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
locale__Locimp
*
__cdecl
locale__Locimp__Makeloc
(
const
/*_Locinfo*/
void
*
locinfo
,
category
cat
,
locale__Locimp
*
locimp
,
const
/*locale*/
void
*
loc
)
{
FIXME
(
"(%p %d %p %p) stub
\n
"
,
locinfo
,
cat
,
locimp
,
loc
);
return
NULL
;
}
/* ?_Makeushloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z */
/* ?_Makeushloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
void
__cdecl
locale__Locimp__Makeushloc
(
const
/*_Locinfo*/
void
*
locinfo
,
category
cat
,
locale__Locimp
*
locimp
,
const
/*locale*/
void
*
loc
)
{
FIXME
(
"(%p %d %p %p) stub
\n
"
,
locinfo
,
cat
,
locimp
,
loc
);
}
/* ?_Makewloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z */
/* ?_Makewloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
void
__cdecl
locale__Locimp__Makewloc
(
const
/*_Locinfo*/
void
*
locinfo
,
category
cat
,
locale__Locimp
*
locimp
,
const
/*locale*/
void
*
loc
)
{
FIXME
(
"(%p %d %p %p) stub
\n
"
,
locinfo
,
cat
,
locimp
,
loc
);
}
/* ?_Makexloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z */
/* ?_Makexloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
void
__cdecl
locale__Locimp__Makexloc
(
const
/*_Locinfo*/
void
*
locinfo
,
category
cat
,
locale__Locimp
*
locimp
,
const
/*locale*/
void
*
loc
)
{
FIXME
(
"(%p %d %p %p) stub
\n
"
,
locinfo
,
cat
,
locimp
,
loc
);
}
/* ??_7_Locimp@locale@std@@6B@ */
const
vtable_ptr
MSVCP_locale__Locimp_vtable
[]
=
{
(
vtable_ptr
)
THISCALL_NAME
(
MSVCP_locale__Locimp_vector_dtor
)
};
dlls/msvcp90/msvcp90.spec
View file @
ac978ea8
...
...
@@ -1068,10 +1068,10 @@
@ stub -arch=win64 ??0Init@ios_base@std@@QEAA@XZ
@ stub -arch=win32 ??0_Init_locks@std@@QAE@XZ
@ stub -arch=win64 ??0_Init_locks@std@@QEAA@XZ
@
stub -arch=win32 ??0_Locimp@locale@std@@AAE@ABV012@@Z
@
stub -arch=win64 ??0_Locimp@locale@std@@AEAA@AEBV012@@Z
@
stub -arch=win32 ??0_Locimp@locale@std@@AAE@_N@Z
@
stub -arch=win64 ??0_Locimp@locale@std@@AEAA@_N@Z
@
thiscall -arch=win32 ??0_Locimp@locale@std@@AAE@ABV012@@Z(ptr ptr) locale__Locimp_copy_ctor
@
cdecl -arch=win64 ??0_Locimp@locale@std@@AEAA@AEBV012@@Z(ptr ptr) locale__Locimp_copy_ctor
@
thiscall -arch=win32 ??0_Locimp@locale@std@@AAE@_N@Z(ptr long) locale__Locimp_ctor_transparent
@
cdecl -arch=win64 ??0_Locimp@locale@std@@AEAA@_N@Z(ptr long) locale__Locimp_ctor_transparent
@ stub -arch=win32 ??0_Locinfo@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ stub -arch=win64 ??0_Locinfo@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z
@ stub -arch=win32 ??0_Locinfo@std@@QAE@HPBD@Z
...
...
@@ -1312,8 +1312,8 @@
@ stub -arch=win64 ??1Init@ios_base@std@@QEAA@XZ
@ stub -arch=win32 ??1_Init_locks@std@@QAE@XZ
@ stub -arch=win64 ??1_Init_locks@std@@QEAA@XZ
@
stub -arch=win32 ??1_Locimp@locale@std@@MAE@XZ
@
stub -arch=win64 ??1_Locimp@locale@std@@MEAA@XZ
@
thiscall -arch=win32 ??1_Locimp@locale@std@@MAE@XZ(ptr) locale__Locimp_dtor
@
cdecl -arch=win64 ??1_Locimp@locale@std@@MEAA@XZ(ptr) locale__Locimp_dtor
@ stub -arch=win32 ??1_Locinfo@std@@QAE@XZ
@ stub -arch=win64 ??1_Locinfo@std@@QEAA@XZ
@ stub -arch=win32 ??1_Lockit@std@@QAE@XZ
...
...
@@ -1857,7 +1857,7 @@
# extern ??_7?$time_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@6B@
# extern ??_7?$time_put@GV?$ostreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@6B@
# extern ??_7?$time_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@6B@
# extern ??_7_Locimp@locale@std@@6B@
@ extern ??_7_Locimp@locale@std@@6B@ MSVCP_locale__Locimp_vtable
# extern ??_7codecvt_base@std@@6B@
# extern ??_7ctype_base@std@@6B@
@ extern ??_7ios_base@std@@6B@ MSVCP_ios_base_vtable
...
...
@@ -2075,8 +2075,8 @@
@ stub -arch=win64 ??_F?$time_put@GV?$ostreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEAAXXZ
@ stub -arch=win32 ??_F?$time_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAEXXZ
@ stub -arch=win64 ??_F?$time_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEAAXXZ
@
stub -arch=win32 ??_F_Locimp@locale@std@@QAEXXZ
@
stub -arch=win64 ??_F_Locimp@locale@std@@QEAAXXZ
@
thiscall -arch=win32 ??_F_Locimp@locale@std@@QAEXXZ(ptr) locale__Locimp_ctor
@
cdecl -arch=win64 ??_F_Locimp@locale@std@@QEAAXXZ(ptr) locale__Locimp_ctor
@ stub -arch=win32 ??_F_Locinfo@std@@QAEXXZ
@ stub -arch=win64 ??_F_Locinfo@std@@QEAAXXZ
@ stub -arch=win32 ??_F_Timevec@std@@QAEXXZ
...
...
@@ -2099,8 +2099,8 @@
@ stub -arch=win64 ??_Ftime_base@std@@QEAAXXZ
@ stub -arch=win32 ?_Addcats@_Locinfo@std@@QAEAAV12@HPBD@Z
@ stub -arch=win64 ?_Addcats@_Locinfo@std@@QEAAAEAV12@HPEBD@Z
@
stub -arch=win32 ?_Addfac@_Locimp@locale@std@@AAEXPAVfacet@23@I@Z
@
stub -arch=win64 ?_Addfac@_Locimp@locale@std@@AEAAXPEAVfacet@23@_K@Z
@
thiscall -arch=win32 ?_Addfac@_Locimp@locale@std@@AAEXPAVfacet@23@I@Z(ptr ptr long) locale__Locimp__Addfac
@
cdecl -arch=win64 ?_Addfac@_Locimp@locale@std@@AEAAXPEAVfacet@23@_K@Z(ptr ptr long) locale__Locimp__Addfac
@ stub -arch=win32 ?_Addfac@locale@std@@QAEAAV12@PAVfacet@12@II@Z
@ stub -arch=win64 ?_Addfac@locale@std@@QEAAAEAV12@PEAVfacet@12@_K1@Z
@ cdecl -arch=win32 ?_Addstd@ios_base@std@@SAXPAV12@@Z(ptr) ios_base_Addstd
...
...
@@ -2125,10 +2125,10 @@
# extern -arch=win64 ?_Cl@?5???$log@M@std@@YA?AV?$complex@M@1@AEBV21@@Z@4MB
# extern -arch=win32 ?_Cl@?5???$log@N@std@@YA?AV?$complex@N@1@ABV21@@Z@4NB
# extern -arch=win64 ?_Cl@?5???$log@N@std@@YA?AV?$complex@N@1@AEBV21@@Z@4NB
# extern -arch=win32 ?_Clocptr@_Locimp@locale@std@@0PAV123@A
# extern -arch=win64 ?_Clocptr@_Locimp@locale@std@@0PEAV123@EA
@
stub -arch=win32 ?_Clocptr_func@_Locimp@locale@std@@CAAAPAV123@XZ
@
stub -arch=win64 ?_Clocptr_func@_Locimp@locale@std@@CAAEAPEAV123@XZ
@ extern -arch=win32 ?_Clocptr@_Locimp@locale@std@@0PAV123@A locale__Locimp__Clocptr
@ extern -arch=win64 ?_Clocptr@_Locimp@locale@std@@0PEAV123@EA locale__Locimp__Clocptr
@
cdecl -arch=win32 ?_Clocptr_func@_Locimp@locale@std@@CAAAPAV123@XZ(long) locale__Locimp__Clocptr_func
@
cdecl -arch=win64 ?_Clocptr_func@_Locimp@locale@std@@CAAEAPEAV123@XZ(long) locale__Locimp__Clocptr_func
@ stub -arch=win32 ?_Clog_func@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ
@ stub -arch=win64 ?_Clog_func@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@XZ
@ stub -arch=win64 ?_Cm@?5???$log@M@std@@YA?AV?$complex@M@1@AEBV21@@Z@4MB
...
...
@@ -2575,12 +2575,12 @@
@ stub ?_Isnan@?$_Ctraits@M@std@@SA_NM@Z
@ stub ?_Isnan@?$_Ctraits@N@std@@SA_NN@Z
@ stub ?_Isnan@?$_Ctraits@O@std@@SA_NO@Z
@
stub -arch=win32 ?_Locimp_Addfac@_Locimp@locale@std@@CAXPAV123@PAVfacet@23@I@Z
@
stub -arch=win64 ?_Locimp_Addfac@_Locimp@locale@std@@CAXPEAV123@PEAVfacet@23@_K@Z
@
stub -arch=win32 ?_Locimp_ctor@_Locimp@locale@std@@CAXPAV123@ABV123@@Z
@
stub -arch=win64 ?_Locimp_ctor@_Locimp@locale@std@@CAXPEAV123@AEBV123@@Z
@
stub -arch=win32 ?_Locimp_dtor@_Locimp@locale@std@@CAXPAV123@@Z
@
stub -arch=win64 ?_Locimp_dtor@_Locimp@locale@std@@CAXPEAV123@@Z
@
cdecl -arch=win32 ?_Locimp_Addfac@_Locimp@locale@std@@CAXPAV123@PAVfacet@23@I@Z(ptr ptr long) locale__Locimp__Locimp_Addfac
@
cdecl -arch=win64 ?_Locimp_Addfac@_Locimp@locale@std@@CAXPEAV123@PEAVfacet@23@_K@Z(ptr ptr long) locale__Locimp__Locimp_Addfac
@
cdecl -arch=win32 ?_Locimp_ctor@_Locimp@locale@std@@CAXPAV123@ABV123@@Z(ptr ptr) locale__Locimp_copy_ctor
@
cdecl -arch=win64 ?_Locimp_ctor@_Locimp@locale@std@@CAXPEAV123@AEBV123@@Z(ptr ptr) locale__Locimp_copy_ctor
@
cdecl -arch=win32 ?_Locimp_dtor@_Locimp@locale@std@@CAXPAV123@@Z(ptr) locale__Locimp_dtor
@
cdecl -arch=win64 ?_Locimp_dtor@_Locimp@locale@std@@CAXPEAV123@@Z(ptr) locale__Locimp_dtor
@ stub -arch=win32 ?_Locinfo_Addcats@_Locinfo@std@@SAAAV12@PAV12@HPBD@Z
@ stub -arch=win64 ?_Locinfo_Addcats@_Locinfo@std@@SAAEAV12@PEAV12@HPEBD@Z
@ stub -arch=win32 ?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z
...
...
@@ -2615,14 +2615,14 @@
@ stub -arch=win64 ?_MP_Mul@tr1@std@@YAXQEA_K_K1@Z
@ stub -arch=win32 ?_MP_Rem@tr1@std@@YAXQA_K_K@Z
@ stub -arch=win64 ?_MP_Rem@tr1@std@@YAXQEA_K_K@Z
@
stub -arch=win32 ?_Makeloc@_Locimp@locale@std@@CAPAV123@ABV_Locinfo@3@HPAV123@PBV23@@Z
@
stub -arch=win64 ?_Makeloc@_Locimp@locale@std@@CAPEAV123@AEBV_Locinfo@3@HPEAV123@PEBV23@@Z
@
stub -arch=win32 ?_Makeushloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z
@
stub -arch=win64 ?_Makeushloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z
@
stub -arch=win32 ?_Makewloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z
@
stub -arch=win64 ?_Makewloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z
@
stub -arch=win32 ?_Makexloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z
@
stub -arch=win64 ?_Makexloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z
@
cdecl -arch=win32 ?_Makeloc@_Locimp@locale@std@@CAPAV123@ABV_Locinfo@3@HPAV123@PBV23@@Z(ptr long ptr ptr) locale__Locimp__Makeloc
@
cdecl -arch=win64 ?_Makeloc@_Locimp@locale@std@@CAPEAV123@AEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) locale__Locimp__Makeloc
@
cdecl -arch=win32 ?_Makeushloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z(ptr long ptr ptr) locale__Locimp__Makeushloc
@
cdecl -arch=win64 ?_Makeushloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) locale__Locimp__Makeushloc
@
cdecl -arch=win32 ?_Makewloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z(ptr long ptr ptr) locale__Locimp__Makewloc
@
cdecl -arch=win64 ?_Makewloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) locale__Locimp__Makewloc
@
cdecl -arch=win32 ?_Makexloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z(ptr long ptr ptr) locale__Locimp__Makexloc
@
cdecl -arch=win64 ?_Makexloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) locale__Locimp__Makexloc
@ stub -arch=win32 ?_Makpat@?$_Mpunct@D@std@@AAEXAAUpattern@money_base@2@III@Z
@ stub -arch=win64 ?_Makpat@?$_Mpunct@D@std@@AEAAXAEAUpattern@money_base@2@III@Z
@ stub -arch=win32 ?_Makpat@?$_Mpunct@G@std@@AAEXAAUpattern@money_base@2@III@Z
...
...
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