[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Dotgnu-pnet-commits] CVS: pnet/engine cvm_ptr.c,1.34,1.35
From: |
Rhys Weatherley <address@hidden> |
Subject: |
[Dotgnu-pnet-commits] CVS: pnet/engine cvm_ptr.c,1.34,1.35 |
Date: |
Sun, 16 Feb 2003 04:35:37 -0500 |
Update of /cvsroot/dotgnu-pnet/pnet/engine
In directory subversions:/tmp/cvs-serv21022/engine
Modified Files:
cvm_ptr.c
Log Message:
Fix bug #2566 - could not cast from String[] to Object[] using an
intermediate step of Object.
Index: cvm_ptr.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/cvm_ptr.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -C2 -r1.34 -r1.35
*** cvm_ptr.c 6 Feb 2003 03:56:25 -0000 1.34
--- cvm_ptr.c 16 Feb 2003 09:35:35 -0000 1.35
***************
*** 70,73 ****
--- 70,99 ----
}
+ /*
+ * Perform a class cast, taking arrays into account.
+ */
+ static int CanCastClass(ILImage *image, ILClass *fromClass, ILClass *toClass)
+ {
+ ILType *fromType = ILClassGetSynType(fromClass);
+ ILType *toType = ILClassGetSynType(toClass);
+ if(fromType && toType)
+ {
+ if(ILType_IsArray(fromType) && ILType_IsArray(toType) &&
+ ILTypeGetRank(fromType) == ILTypeGetRank(toType))
+ {
+ return ILTypeAssignCompatible
+ (image, ILTypeGetElemType(fromType),
ILTypeGetElemType(toType));
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ else
+ {
+ return ILClassInheritsFrom(fromClass, toClass);
+ }
+ }
+
#elif defined(IL_CVM_LOCALS)
***************
*** 2291,2295 ****
classInfo = CVM_ARG_PTR(ILClass *);
if(!stacktop[-1].ptrValue ||
! ILClassInheritsFrom(GetObjectClass(stacktop[-1].ptrValue),
classInfo))
{
MODIFY_PC_AND_STACK(CVM_LEN_PTR, 0);
--- 2317,2322 ----
classInfo = CVM_ARG_PTR(ILClass *);
if(!stacktop[-1].ptrValue ||
! CanCastClass(ILProgramItem_Image(method),
! GetObjectClass(stacktop[-1].ptrValue),
classInfo))
{
MODIFY_PC_AND_STACK(CVM_LEN_PTR, 0);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] CVS: pnet/engine cvm_ptr.c,1.34,1.35,
Rhys Weatherley <address@hidden> <=