This page describes unfixable bugs by our approaches.
This bug occurs when scope variable is assigned to a NativeCall or NativeWith type object.
Buggy:
1519
if (cx.hasCompileFunctionsWithDynamicScope()) {
1520
fn.itsUseDynamicScope = true;
1521
}
Patched:
1519
if (cx.hasCompileFunctionsWithDynamicScope()) {
// [...comments...]
1525
if (!(scope instanceof NativeCall
1526
|| scope instanceof NativeWith))}
1527
{
1528
fn.itsUseDynamicScope = true;
1529
}
1530
}
Finding NativeCall and NativeWith types and a necessary branch condition is chanllenging.
This bug occurs when sources == null.
Buggy:
236
private void retargetFrom(InstructionHandle old, InstructionHandle fresh) {
237
InstructionTargeter[] sources = old.getTargeters();
238
if (sources != null) {
239
for (int i = sources.length - 1; i >= 0; i--) {
240
sources[i].updateTarget(old, fresh);
241
}
242
}
243
}
Patched:
237
private void retargetFrom(InstructionHandle old, InstructionHandle fresh) {
238
InstructionTargeter[] sources = old.getTargeters();
239
if (sources != null) {
240
for (int i = sources.length - 1; i >= 0; i--) {
241
if (sources[i] instanceof ExceptionRange) {
242
ExceptionRange it = (ExceptionRange)sources[i];
243
System.err.println("...");
244
it.updateTarget(old,fresh,it.getBody());
245
} else {
246
sources[i].updateTarget(old, fresh);
247
}
248
}
249
}
250
}
Generating the underlined statement is challenging. This statement does not appear elsewhere in the same program.
This bug occurs when variable val has a value which is larger than upper bound (037).
Buggy:
1025
if (isDigit(c) && c < '8') {
1026
val = 8 * val + c - '0';
1027
c = in.read();
1028
}
Patched:
1025
if ('0' <= c && c < '8' && val <= 037) {
// [...comments...]
1028
val = 8 * val + c - '0';
1029
c = in.read();
1030
}
The constant "037" cannot be found in the same problem. Generating the constant is challenging.