Frame is not checked before merge
I notice that the public boolean merge(final Frame<? extends V> frame, final boolean[] localsUsed)
method of org.objectweb.asm.tree.analysis.Frame
does not check frame:
`public boolean merge(final Frame<? extends V> frame, final boolean[] localsUsed) {
boolean changed = false;
for (int i = 0; i < numLocals; ++i) {
if (!localsUsed[i] && !values[i].equals(frame.values[i])) {
values[i] = frame.values[i];
changed = true;
}
}
return changed;
}`
In the same class, the public boolean merge(final Frame<? extends V> frame, final Interpreter<V> interpreter)
checks the parameter:
` public boolean merge(final Frame<? extends V> frame, final Interpreter interpreter) throws AnalyzerException {
if (numStack != frame.numStack) {
throw new AnalyzerException(null, "Incompatible stack heights");
}
boolean changed = false;
for (int i = 0; i < numLocals + numStack; ++i) {
V v = interpreter.merge(values[i], frame.values[i]);
if (!v.equals(values[i])) {
values[i] = v;
changed = true;
}
}
return changed;
}`
Please add the check to the first method as well to avoid possible bugs.