File tree 3 files changed +40
-8
lines changed
3 files changed +40
-8
lines changed Original file line number Diff line number Diff line change @@ -53,8 +53,7 @@ public static void LoadSpecificArgs()
53
53
/// More complex version of StartAndStopTwice test
54
54
/// </summary>
55
55
[ Test ]
56
- [ Ignore ( "GH#376: System.OverflowException : Arithmetic operation resulted in an overflow" ) ]
57
- //[Ignore("System.ArgumentException : Cannot pass a GCHandle across AppDomains")]
56
+ [ Ignore ( "System.ArgumentException : Cannot pass a GCHandle across AppDomains" ) ]
58
57
public void ReInitialize ( )
59
58
{
60
59
var code = "from System import Int32\n " ;
Original file line number Diff line number Diff line change @@ -11,8 +11,19 @@ internal CLRObject(object ob, IntPtr tp)
11
11
{
12
12
IntPtr py = Runtime . PyType_GenericAlloc ( tp , 0 ) ;
13
13
14
- var flags = ( long ) Marshal . ReadIntPtr ( tp , TypeOffset . tp_flags ) ;
15
- if ( ( flags & TypeFlags . Subclass ) != 0 )
14
+ bool bFlag ;
15
+ if ( Runtime . Is32Bit )
16
+ {
17
+ var flags = ( int ) Marshal . ReadIntPtr ( tp , TypeOffset . tp_flags ) ;
18
+ bFlag = ( flags & TypeFlags . Subclass ) != 0 ;
19
+ }
20
+ else
21
+ {
22
+ var flags = ( float ) Marshal . ReadIntPtr ( tp , TypeOffset . tp_flags ) ;
23
+ bFlag = ( flags & TypeFlags . Subclass ) != 0 ;
24
+ }
25
+
26
+ if ( bFlag )
16
27
{
17
28
IntPtr dict = Marshal . ReadIntPtr ( py , ObjectOffset . DictOffset ( tp ) ) ;
18
29
if ( dict == IntPtr . Zero )
Original file line number Diff line number Diff line change @@ -28,8 +28,19 @@ internal static ManagedType GetManagedObject(IntPtr ob)
28
28
tp = ob ;
29
29
}
30
30
31
- var flags = ( long ) Marshal . ReadIntPtr ( tp , TypeOffset . tp_flags ) ;
32
- if ( ( flags & TypeFlags . Managed ) != 0 )
31
+ bool bFlag ;
32
+ if ( Runtime . Is32Bit )
33
+ {
34
+ var flags = ( int ) Marshal . ReadIntPtr ( tp , TypeOffset . tp_flags ) ;
35
+ bFlag = ( flags & TypeFlags . Managed ) != 0 ;
36
+ }
37
+ else
38
+ {
39
+ var flags = ( float ) Marshal . ReadIntPtr ( tp , TypeOffset . tp_flags ) ;
40
+ bFlag = ( flags & TypeFlags . Managed ) != 0 ;
41
+ }
42
+
43
+ if ( bFlag )
33
44
{
34
45
IntPtr op = tp == ob
35
46
? Marshal . ReadIntPtr ( tp , TypeOffset . magic ( ) )
@@ -63,8 +74,19 @@ internal static bool IsManagedType(IntPtr ob)
63
74
tp = ob ;
64
75
}
65
76
66
- var flags = ( long ) Marshal . ReadIntPtr ( tp , TypeOffset . tp_flags ) ;
67
- if ( ( flags & TypeFlags . Managed ) != 0 )
77
+ bool bFlag ;
78
+ if ( Runtime . Is32Bit )
79
+ {
80
+ var flags = ( int ) Marshal . ReadIntPtr ( tp , TypeOffset . tp_flags ) ;
81
+ bFlag = ( flags & TypeFlags . Managed ) != 0 ;
82
+ }
83
+ else
84
+ {
85
+ var flags = ( float ) Marshal . ReadIntPtr ( tp , TypeOffset . tp_flags ) ;
86
+ bFlag = ( flags & TypeFlags . Managed ) != 0 ;
87
+ }
88
+
89
+ if ( bFlag )
68
90
{
69
91
return true ;
70
92
}
You can’t perform that action at this time.
0 commit comments