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
15b144b3
Commit
15b144b3
authored
Feb 23, 2017
by
Piotr Caban
Committed by
Alexandre Julliard
Feb 23, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msvcrt: Add __ExceptionPtrCopyException implementation.
Signed-off-by:
Piotr Caban
<
piotr@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
6caecb6e
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
91 additions
and
10 deletions
+91
-10
msvcp140.spec
dlls/msvcp140/msvcp140.spec
+2
-2
msvcr100.spec
dlls/msvcr100/msvcr100.spec
+2
-2
msvcr110.spec
dlls/msvcr110/msvcr110.spec
+2
-2
msvcr120.spec
dlls/msvcr120/msvcr120.spec
+2
-2
msvcr120_app.spec
dlls/msvcr120_app/msvcr120_app.spec
+2
-2
cpp.c
dlls/msvcrt/cpp.c
+81
-0
No files found.
dlls/msvcp140/msvcp140.spec
View file @
15b144b3
...
...
@@ -1695,8 +1695,8 @@
@ stub -arch=win64 ?__ExceptionPtrCompare@@YA_NPEBX0@Z
@ cdecl -arch=win32 ?__ExceptionPtrCopy@@YAXPAXPBX@Z(ptr ptr) msvcr120.?__ExceptionPtrCopy@@YAXPAXPBX@Z
@ cdecl -arch=win64 ?__ExceptionPtrCopy@@YAXPEAXPEBX@Z(ptr ptr) msvcr120.?__ExceptionPtrCopy@@YAXPEAXPEBX@Z
@
stub -arch=win32
?__ExceptionPtrCopyException@@YAXPAXPBX1@Z
@
stub -arch=win64
?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z
@
cdecl -arch=win32 ?__ExceptionPtrCopyException@@YAXPAXPBX1@Z(ptr ptr ptr) msvcr120.
?__ExceptionPtrCopyException@@YAXPAXPBX1@Z
@
cdecl -arch=win64 ?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z(ptr ptr ptr) msvcr120.
?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z
@ cdecl -arch=win32 ?__ExceptionPtrCreate@@YAXPAX@Z(ptr) msvcr120.?__ExceptionPtrCreate@@YAXPAX@Z
@ cdecl -arch=win64 ?__ExceptionPtrCreate@@YAXPEAX@Z(ptr) msvcr120.?__ExceptionPtrCreate@@YAXPEAX@Z
@ cdecl -arch=win32 ?__ExceptionPtrCurrentException@@YAXPAX@Z(ptr) msvcr120.?__ExceptionPtrCurrentException@@YAXPAX@Z
...
...
dlls/msvcr100/msvcr100.spec
View file @
15b144b3
...
...
@@ -414,8 +414,8 @@
@ stub -arch=win64 ?__ExceptionPtrCompare@@YA_NPEBX0@Z
@ cdecl -arch=win32 ?__ExceptionPtrCopy@@YAXPAXPBX@Z(ptr ptr) __ExceptionPtrCopy
@ cdecl -arch=win64 ?__ExceptionPtrCopy@@YAXPEAXPEBX@Z(ptr ptr) __ExceptionPtrCopy
@
stub -arch=win32 ?__ExceptionPtrCopyException@@YAXPAXPBX1@Z
@
stub -arch=win64 ?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z
@
cdecl -arch=win32 ?__ExceptionPtrCopyException@@YAXPAXPBX1@Z(ptr ptr ptr) __ExceptionPtrCopyException
@
cdecl -arch=win64 ?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z(ptr ptr ptr) __ExceptionPtrCopyException
@ cdecl -arch=win32 ?__ExceptionPtrCreate@@YAXPAX@Z(ptr) __ExceptionPtrCreate
@ cdecl -arch=win64 ?__ExceptionPtrCreate@@YAXPEAX@Z(ptr) __ExceptionPtrCreate
@ cdecl -arch=win32 ?__ExceptionPtrCurrentException@@YAXPAX@Z(ptr) __ExceptionPtrCurrentException
...
...
dlls/msvcr110/msvcr110.spec
View file @
15b144b3
...
...
@@ -692,8 +692,8 @@
@ stub -arch=win64 ?__ExceptionPtrCompare@@YA_NPEBX0@Z
@ cdecl -arch=win32 ?__ExceptionPtrCopy@@YAXPAXPBX@Z(ptr ptr) __ExceptionPtrCopy
@ cdecl -arch=win64 ?__ExceptionPtrCopy@@YAXPEAXPEBX@Z(ptr ptr) __ExceptionPtrCopy
@
stub -arch=win32 ?__ExceptionPtrCopyException@@YAXPAXPBX1@Z
@
stub -arch=win64 ?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z
@
cdecl -arch=win32 ?__ExceptionPtrCopyException@@YAXPAXPBX1@Z(ptr ptr ptr) __ExceptionPtrCopyException
@
cdecl -arch=win64 ?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z(ptr ptr ptr) __ExceptionPtrCopyException
@ cdecl -arch=win32 ?__ExceptionPtrCreate@@YAXPAX@Z(ptr) __ExceptionPtrCreate
@ cdecl -arch=win64 ?__ExceptionPtrCreate@@YAXPEAX@Z(ptr) __ExceptionPtrCreate
@ cdecl -arch=win32 ?__ExceptionPtrCurrentException@@YAXPAX@Z(ptr) __ExceptionPtrCurrentException
...
...
dlls/msvcr120/msvcr120.spec
View file @
15b144b3
...
...
@@ -674,8 +674,8 @@
@ stub -arch=win64 ?__ExceptionPtrCompare@@YA_NPEBX0@Z
@ cdecl -arch=win32 ?__ExceptionPtrCopy@@YAXPAXPBX@Z(ptr ptr) __ExceptionPtrCopy
@ cdecl -arch=win64 ?__ExceptionPtrCopy@@YAXPEAXPEBX@Z(ptr ptr) __ExceptionPtrCopy
@
stub -arch=win32 ?__ExceptionPtrCopyException@@YAXPAXPBX1@Z
@
stub -arch=win64 ?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z
@
cdecl -arch=win32 ?__ExceptionPtrCopyException@@YAXPAXPBX1@Z(ptr ptr ptr) __ExceptionPtrCopyException
@
cdecl -arch=win64 ?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z(ptr ptr ptr) __ExceptionPtrCopyException
@ cdecl -arch=win32 ?__ExceptionPtrCreate@@YAXPAX@Z(ptr) __ExceptionPtrCreate
@ cdecl -arch=win64 ?__ExceptionPtrCreate@@YAXPEAX@Z(ptr) __ExceptionPtrCreate
@ cdecl -arch=win32 ?__ExceptionPtrCurrentException@@YAXPAX@Z(ptr) __ExceptionPtrCurrentException
...
...
dlls/msvcr120_app/msvcr120_app.spec
View file @
15b144b3
...
...
@@ -670,8 +670,8 @@
@ stub -arch=win64 ?__ExceptionPtrCompare@@YA_NPEBX0@Z
@ cdecl -arch=win32 ?__ExceptionPtrCopy@@YAXPAXPBX@Z(ptr ptr) msvcr120.?__ExceptionPtrCopy@@YAXPAXPBX@Z
@ cdecl -arch=win64 ?__ExceptionPtrCopy@@YAXPEAXPEBX@Z(ptr ptr) msvcr120.?__ExceptionPtrCopy@@YAXPEAXPEBX@Z
@
stub -arch=win32
?__ExceptionPtrCopyException@@YAXPAXPBX1@Z
@
stub -arch=win64
?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z
@
cdecl -arch=win32 ?__ExceptionPtrCopyException@@YAXPAXPBX1@Z(ptr ptr ptr) msvcr120.
?__ExceptionPtrCopyException@@YAXPAXPBX1@Z
@
cdecl -arch=win64 ?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z(ptr ptr ptr) msvcr120.
?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z
@ cdecl -arch=win32 ?__ExceptionPtrCreate@@YAXPAX@Z(ptr) msvcr120.?__ExceptionPtrCreate@@YAXPAX@Z
@ cdecl -arch=win64 ?__ExceptionPtrCreate@@YAXPEAX@Z(ptr) msvcr120.?__ExceptionPtrCreate@@YAXPEAX@Z
@ cdecl -arch=win32 ?__ExceptionPtrCurrentException@@YAXPAX@Z(ptr) msvcr120.?__ExceptionPtrCurrentException@@YAXPAX@Z
...
...
dlls/msvcrt/cpp.c
View file @
15b144b3
...
...
@@ -1499,6 +1499,87 @@ MSVCRT_bool __cdecl __ExceptionPtrToBool(exception_ptr *ep)
return
!!
ep
->
rec
;
}
/*********************************************************************
* ?__ExceptionPtrCopyException@@YAXPAXPBX1@Z
* ?__ExceptionPtrCopyException@@YAXPEAXPEBX1@Z
*/
#ifndef __x86_64__
void
__cdecl
__ExceptionPtrCopyException
(
exception_ptr
*
ep
,
exception
*
object
,
const
cxx_exception_type
*
type
)
{
const
cxx_type_info
*
ti
;
void
**
data
;
__ExceptionPtrDestroy
(
ep
);
ep
->
rec
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
EXCEPTION_RECORD
));
ep
->
ref
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
int
));
*
ep
->
ref
=
1
;
memset
(
ep
->
rec
,
0
,
sizeof
(
EXCEPTION_RECORD
));
ep
->
rec
->
ExceptionCode
=
CXX_EXCEPTION
;
ep
->
rec
->
ExceptionFlags
=
EH_NONCONTINUABLE
;
ep
->
rec
->
NumberParameters
=
3
;
ep
->
rec
->
ExceptionInformation
[
0
]
=
CXX_FRAME_MAGIC_VC6
;
ep
->
rec
->
ExceptionInformation
[
2
]
=
(
ULONG_PTR
)
type
;
ti
=
type
->
type_info_table
->
info
[
0
];
data
=
HeapAlloc
(
GetProcessHeap
(),
0
,
ti
->
size
);
if
(
ti
->
flags
&
CLASS_IS_SIMPLE_TYPE
)
{
memcpy
(
data
,
object
,
ti
->
size
);
if
(
ti
->
size
==
sizeof
(
void
*
))
*
data
=
get_this_pointer
(
&
ti
->
offsets
,
*
data
);
}
else
if
(
ti
->
copy_ctor
)
{
call_copy_ctor
(
ti
->
copy_ctor
,
data
,
get_this_pointer
(
&
ti
->
offsets
,
object
),
ti
->
flags
&
CLASS_HAS_VIRTUAL_BASE_CLASS
);
}
else
memcpy
(
data
,
get_this_pointer
(
&
ti
->
offsets
,
object
),
ti
->
size
);
ep
->
rec
->
ExceptionInformation
[
1
]
=
(
ULONG_PTR
)
data
;
}
#else
void
__cdecl
__ExceptionPtrCopyException
(
exception_ptr
*
ep
,
exception
*
object
,
const
cxx_exception_type
*
type
)
{
const
cxx_type_info
*
ti
;
void
**
data
;
char
*
base
;
RtlPcToFileHeader
((
void
*
)
type
,
(
void
**
)
&
base
);
__ExceptionPtrDestroy
(
ep
);
ep
->
rec
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
EXCEPTION_RECORD
));
ep
->
ref
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
int
));
*
ep
->
ref
=
1
;
memset
(
ep
->
rec
,
0
,
sizeof
(
EXCEPTION_RECORD
));
ep
->
rec
->
ExceptionCode
=
CXX_EXCEPTION
;
ep
->
rec
->
ExceptionFlags
=
EH_NONCONTINUABLE
;
ep
->
rec
->
NumberParameters
=
4
;
ep
->
rec
->
ExceptionInformation
[
0
]
=
CXX_FRAME_MAGIC_VC6
;
ep
->
rec
->
ExceptionInformation
[
2
]
=
(
ULONG_PTR
)
type
;
ep
->
rec
->
ExceptionInformation
[
3
]
=
(
ULONG_PTR
)
base
;
ti
=
(
const
cxx_type_info
*
)(
base
+
((
const
cxx_type_info_table
*
)(
base
+
type
->
type_info_table
))
->
info
[
0
]);
data
=
HeapAlloc
(
GetProcessHeap
(),
0
,
ti
->
size
);
if
(
ti
->
flags
&
CLASS_IS_SIMPLE_TYPE
)
{
memcpy
(
data
,
object
,
ti
->
size
);
if
(
ti
->
size
==
sizeof
(
void
*
))
*
data
=
get_this_pointer
(
&
ti
->
offsets
,
*
data
);
}
else
if
(
ti
->
copy_ctor
)
{
call_copy_ctor
(
base
+
ti
->
copy_ctor
,
data
,
get_this_pointer
(
&
ti
->
offsets
,
object
),
ti
->
flags
&
CLASS_HAS_VIRTUAL_BASE_CLASS
);
}
else
memcpy
(
data
,
get_this_pointer
(
&
ti
->
offsets
,
object
),
ti
->
size
);
ep
->
rec
->
ExceptionInformation
[
1
]
=
(
ULONG_PTR
)
data
;
}
#endif
void
*
__cdecl
__AdjustPointer
(
void
*
obj
,
const
this_ptr_offsets
*
off
)
{
return
get_this_pointer
(
off
,
obj
);
...
...
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