[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Dotgnu-pnet-commits] CVS: pnetlib/JScript/Builtins BuiltinFunction.cs,
From: |
Rhys Weatherley <address@hidden> |
Subject: |
[Dotgnu-pnet-commits] CVS: pnetlib/JScript/Builtins BuiltinFunction.cs,1.2,1.3 |
Date: |
Thu, 06 Mar 2003 20:44:31 -0500 |
Update of /cvsroot/dotgnu-pnet/pnetlib/JScript/Builtins
In directory subversions:/tmp/cvs-serv17212/JScript/Builtins
Modified Files:
BuiltinFunction.cs
Log Message:
Handle builtin functions that have odd numbers of parameters.
Index: BuiltinFunction.cs
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnetlib/JScript/Builtins/BuiltinFunction.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** BuiltinFunction.cs 7 Mar 2003 01:08:35 -0000 1.2
--- BuiltinFunction.cs 7 Mar 2003 01:44:23 -0000 1.3
***************
*** 75,79 ****
JSFunctionAttributeEnum.HasVarArgs |
JSFunctionAttributeEnum.HasEngine)) ==
! (JSFunctionAttributeEnum)0)
{
return method.Invoke(null, args);
--- 75,80 ----
JSFunctionAttributeEnum.HasVarArgs |
JSFunctionAttributeEnum.HasEngine)) ==
! (JSFunctionAttributeEnum)0 &&
! requiredParameters == args.Length)
{
return method.Invoke(null, args);
***************
*** 83,101 ****
Object[] tempArgs = new Object
[requiredParameters];
int posn = 0;
if((flags &
JSFunctionAttributeEnum.HasThisObject) != 0)
{
tempArgs[posn++] = thisob;
}
if((flags &
JSFunctionAttributeEnum.HasEngine) != 0)
{
tempArgs[posn++] = engine;
}
if((flags &
JSFunctionAttributeEnum.HasVarArgs) != 0)
{
! tempArgs[posn] = args;
}
! else
{
Array.Copy(args, 0, tempArgs,
posn, args.Length);
}
return method.Invoke(null, tempArgs);
--- 84,130 ----
Object[] tempArgs = new Object
[requiredParameters];
int posn = 0;
+ int req = requiredParameters;
+ Object[] rest;
if((flags &
JSFunctionAttributeEnum.HasThisObject) != 0)
{
tempArgs[posn++] = thisob;
+ --req;
}
if((flags &
JSFunctionAttributeEnum.HasEngine) != 0)
{
tempArgs[posn++] = engine;
+ --req;
}
if((flags &
JSFunctionAttributeEnum.HasVarArgs) != 0)
{
! if(req <= 1)
! {
! tempArgs[posn] = args;
! }
! else
! {
! --req;
! if(args.Length <= req)
! {
!
Array.Copy(args, 0, tempArgs, posn,
!
args.Length);
! rest = new
Object [0];
! }
! else
! {
!
Array.Copy(args, 0, tempArgs, posn, req);
! rest = new
Object [args.Length - req];
!
Array.Copy(args, req, rest, 0, rest.Length);
! }
!
tempArgs[tempArgs.Length - 1] = rest;
! }
}
! else if(args.Length <= req)
{
Array.Copy(args, 0, tempArgs,
posn, args.Length);
+ }
+ else
+ {
+ Array.Copy(args, 0, tempArgs,
posn, req);
}
return method.Invoke(null, tempArgs);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] CVS: pnetlib/JScript/Builtins BuiltinFunction.cs,1.2,1.3,
Rhys Weatherley <address@hidden> <=