dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] pnet/engine cvmc_setup.c,1.38,1.39


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] pnet/engine cvmc_setup.c,1.38,1.39
Date: Sat, 29 Nov 2003 21:31:53 +0000

Update of /cvsroot/dotgnu-pnet/pnet/engine
In directory subversions:/tmp/cvs-serv11381/engine

Modified Files:
        cvmc_setup.c 
Log Message:


Truncate or sign-extend 8-bit and 16-bit values from PInvoke/internalcall
methods just in case "libffi" sets the high bits to garbage.


Index: cvmc_setup.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/cvmc_setup.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -C2 -d -r1.38 -r1.39
*** cvmc_setup.c        7 Oct 2003 09:38:16 -0000       1.38
--- cvmc_setup.c        29 Nov 2003 21:31:51 -0000      1.39
***************
*** 1074,1077 ****
--- 1074,1108 ----
                                        CVM_ADJUST(1);
                                }
+ 
+                               /* Truncate or sign-extend small values just in 
case
+                                  "libffi" didn't do it for us */
+                               switch(ILType_ToElement(returnType))
+                               {
+                                       case IL_META_ELEMTYPE_BOOLEAN:
+                                       case IL_META_ELEMTYPE_I1:
+                                       {
+                                               CVM_OUT_NONE(COP_I2B);
+                                       }
+                                       break;
+ 
+                                       case IL_META_ELEMTYPE_U1:
+                                       {
+                                               CVM_OUT_NONE(COP_I2UB);
+                                       }
+                                       break;
+ 
+                                       case IL_META_ELEMTYPE_I2:
+                                       {
+                                               CVM_OUT_NONE(COP_I2S);
+                                       }
+                                       break;
+ 
+                                       case IL_META_ELEMTYPE_U2:
+                                       case IL_META_ELEMTYPE_CHAR:
+                                       {
+                                               CVM_OUT_NONE(COP_I2US);
+                                       }
+                                       break;
+                               }
                                CVM_OUT_RETURN(1);
                        #else





reply via email to

[Prev in Thread] Current Thread [Next in Thread]