geforkt von Mirrors/FastAsyncWorldEdit
Fix ExceptionHandler compareTo method.
The previous implementation violated the contract that compareTo must be behave the same way when operands are reversed and that it is transitive. Any classes that were not equal, or a superclass of another were returned as being "less than". The new implementation tests if classes are superclasses of each other, otherwise falls back to alphabetical sorting on canonical name. While this did not manifest in 1.6, the replacement sort algorithm in 1.8 (TimSort) caused the sorting to appear random due to apparently contiguous sections being consumed, then sorted in bulk.
Dieser Commit ist enthalten in:
Ursprung
2db5d8b11a
Commit
d5914e52e1
@ -100,8 +100,10 @@ public abstract class ExceptionConverterHelper implements ExceptionConverter {
|
|||||||
return 0;
|
return 0;
|
||||||
} else if (cls.isAssignableFrom(o.cls)) {
|
} else if (cls.isAssignableFrom(o.cls)) {
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else if (o.cls.isAssignableFrom(cls)) {
|
||||||
return -1;
|
return -1;
|
||||||
|
} else {
|
||||||
|
return cls.getCanonicalName().compareTo(o.cls.getCanonicalName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren