https://bz.apache.org/bugzilla/show_bug.cgi?id=60032
Bug ID: 60032
Summary: EL function resolve varargs values but not send it to
function call
Product: Tomcat 8
Version: 8.0.33
Hardware: PC
Status: NEW
Severity: normal
Priority: P2
Component: EL
Assignee: [email protected]
Reporter: [email protected]
In method AstFunction#getValue, the vargargs values are resolved and added to
named varargs variable. The varargs variables is never added to the parameter
list used to call the method.
if (inputParameterCount > 0) {
params = new Object[methodParameterCount];
try {
for (int i = 0; i < methodParameterCount; i++) {
if (m.isVarArgs() && i == methodParameterCount - 1) {
if (inputParameterCount < methodParameterCount) {
params[i] = null;
} else {
Object[] varargs =
new Object[inputParameterCount -
methodParameterCount + 1];
Class<?> target = paramTypes[i].getComponentType();
for (int j = i; j < inputParameterCount; j++) {
varargs[j-i] =
parameters.jjtGetChild(j).getValue(ctx);
varargs[j-i] = coerceToType(ctx, varargs[j-i],
target);
}
}
} else {
params[i] = parameters.jjtGetChild(i).getValue(ctx);
params[i] = coerceToType(ctx, params[i],
paramTypes[i]);
}
}
} catch (ELException ele) {
throw new ELException(MessageFactory.get("error.function", this
.getOutputName()), ele);
}
}
try {
result = m.invoke(null, params);
} catch (IllegalAccessException iae) {
throw new ELException(MessageFactory.get("error.function", this
.getOutputName()), iae);
} catch (InvocationTargetException ite) {
Throwable cause = ite.getCause();
if (cause instanceof ThreadDeath) {
throw (ThreadDeath) cause;
}
if (cause instanceof VirtualMachineError) {
throw (VirtualMachineError) cause;
}
throw new ELException(MessageFactory.get("error.function", this
.getOutputName()), cause);
}
return result;
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]