@@ -5808,7 +5808,7 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK;
5808
5808
}
5809
5809
MINT_IN_CASE (MINT_CONV_OVF_I4_R8 ) {
5810
5810
double val = LOCAL_VAR (ip [2 ], double );
5811
- if (mono_isnan ( val ) || mono_trunc ( val ) != ( gint32 ) val )
5811
+ if (val < G_MININT32 || val > G_MAXINT32 || isnan ( val ) )
5812
5812
THROW_EX (mono_get_exception_overflow (), ip );
5813
5813
LOCAL_VAR (ip [1 ], gint32 ) = (gint32 )val ;
5814
5814
ip + = 3 ;
@@ -5840,7 +5840,7 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK;
5840
5840
}
5841
5841
MINT_IN_CASE (MINT_CONV_OVF_U4_R8 ) {
5842
5842
double val = LOCAL_VAR (ip [2 ], double );
5843
- if (mono_isnan ( val ) || mono_trunc ( val ) != ( guint32 ) val )
5843
+ if (val < 0 || val > G_MAXUINT32 || isnan ( val ) )
5844
5844
THROW_EX (mono_get_exception_overflow (), ip );
5845
5845
LOCAL_VAR (ip [1 ], gint32 ) = (guint32 ) val ;
5846
5846
ip + = 3 ;
@@ -5880,15 +5880,15 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK;
5880
5880
}
5881
5881
MINT_IN_CASE (MINT_CONV_OVF_I2_R4 ) {
5882
5882
float val = LOCAL_VAR (ip [2 ], float );
5883
- if (mono_isnan ( val ) || mono_trunc ( val ) != ( gint16 ) val )
5883
+ if (val < G_MININT16 || val > G_MAXINT16 || isnan ( val ) )
5884
5884
THROW_EX (mono_get_exception_overflow (), ip );
5885
5885
LOCAL_VAR (ip [1 ], gint32 ) = (gint16 ) val ;
5886
5886
ip + = 3 ;
5887
5887
MINT_IN_BREAK ;
5888
5888
}
5889
5889
MINT_IN_CASE (MINT_CONV_OVF_I2_R8 ) {
5890
5890
double val = LOCAL_VAR (ip [2 ], double );
5891
- if (mono_isnan ( val ) || mono_trunc ( val ) != ( gint16 ) val )
5891
+ if (val < G_MININT16 || val > G_MAXINT16 || isnan ( val ) )
5892
5892
THROW_EX (mono_get_exception_overflow (), ip );
5893
5893
LOCAL_VAR (ip [1 ], gint32 ) = (gint16 ) val ;
5894
5894
ip + = 3 ;
@@ -5912,15 +5912,15 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK;
5912
5912
}
5913
5913
MINT_IN_CASE (MINT_CONV_OVF_U2_R4 ) {
5914
5914
float val = LOCAL_VAR (ip [2 ], float );
5915
- if (mono_isnan ( val ) || mono_trunc ( val ) != ( guint16 ) val )
5915
+ if (val < 0 || val > G_MAXUINT16 || isnan ( val ) )
5916
5916
THROW_EX (mono_get_exception_overflow (), ip );
5917
5917
LOCAL_VAR (ip [1 ], gint32 ) = (guint16 ) val ;
5918
5918
ip + = 3 ;
5919
5919
MINT_IN_BREAK ;
5920
5920
}
5921
5921
MINT_IN_CASE (MINT_CONV_OVF_U2_R8 ) {
5922
5922
double val = LOCAL_VAR (ip [2 ], double );
5923
- if (mono_isnan ( val ) || mono_trunc ( val ) != ( guint16 ) val )
5923
+ if (val < 0 || val > G_MAXUINT16 || isnan ( val ) )
5924
5924
THROW_EX (mono_get_exception_overflow (), ip );
5925
5925
LOCAL_VAR (ip [1 ], gint32 ) = (guint16 ) val ;
5926
5926
ip + = 3 ;
@@ -5960,15 +5960,15 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK;
5960
5960
}
5961
5961
MINT_IN_CASE (MINT_CONV_OVF_I1_R4 ) {
5962
5962
float val = LOCAL_VAR (ip [2 ], float );
5963
- if (mono_isnan ( val ) || mono_trunc ( val ) != ( gint8 ) val )
5963
+ if (val < G_MININT8 || val > G_MAXINT8 || isnan ( val ) )
5964
5964
THROW_EX (mono_get_exception_overflow (), ip );
5965
5965
LOCAL_VAR (ip [1 ], gint32 ) = (gint8 ) val ;
5966
5966
ip + = 3 ;
5967
5967
MINT_IN_BREAK ;
5968
5968
}
5969
5969
MINT_IN_CASE (MINT_CONV_OVF_I1_R8 ) {
5970
5970
double val = LOCAL_VAR (ip [2 ], double );
5971
- if (mono_isnan ( val ) || mono_trunc ( val ) != ( gint8 ) val )
5971
+ if (val < G_MININT8 || val > G_MAXINT8 || isnan ( val ) )
5972
5972
THROW_EX (mono_get_exception_overflow (), ip );
5973
5973
LOCAL_VAR (ip [1 ], gint32 ) = (gint8 ) val ;
5974
5974
ip + = 3 ;
@@ -5992,15 +5992,15 @@ MINT_IN_CASE(MINT_BRTRUE_I8_SP) ZEROP_SP(gint64, !=); MINT_IN_BREAK;
5992
5992
}
5993
5993
MINT_IN_CASE (MINT_CONV_OVF_U1_R4 ) {
5994
5994
float val = LOCAL_VAR (ip [2 ], float );
5995
- if (mono_isnan ( val ) || mono_trunc ( val ) != ( guint8 ) val )
5995
+ if (val < 0 || val > G_MAXUINT8 || isnan ( val ) )
5996
5996
THROW_EX (mono_get_exception_overflow (), ip );
5997
5997
LOCAL_VAR (ip [1 ], gint32 ) = (guint8 ) val ;
5998
5998
ip + = 3 ;
5999
5999
MINT_IN_BREAK ;
6000
6000
}
6001
6001
MINT_IN_CASE (MINT_CONV_OVF_U1_R8 ) {
6002
6002
double val = LOCAL_VAR (ip [2 ], double );
6003
- if (mono_isnan ( val ) || mono_trunc ( val ) != ( guint8 ) val )
6003
+ if (val < 0 || val > G_MAXUINT8 || isnan ( val ) )
6004
6004
THROW_EX (mono_get_exception_overflow (), ip );
6005
6005
LOCAL_VAR (ip [1 ], gint32 ) = (guint8 ) val ;
6006
6006
ip + = 3 ;
0 commit comments