Avoid possible comparison contract violation (#9883)

Motivation:

The current implementation causes IllegalArgumetExceptions to be thrown on Java 11.

The current implementation would violate comparison contract for two cookies C1 and C2 with same path length, since C1 < C2 and C2 < C1. Returning 0 (equality) does not since C1 == C2 and C2 == C1. See #9881

Modification:

Return equality instead of less than on same path length.

Result:

Fixes #9881.
This commit is contained in:
Gerd Riesselmann 2019-12-19 12:16:27 +01:00 committed by Norman Maurer
parent 95b8db0633
commit f995426a59

View File

@ -107,9 +107,9 @@ public final class ClientCookieEncoder extends CookieEncoder {
if (diff != 0) {
return diff;
}
// Rely on Java's sort stability to retain creation order in cases where
// Rely on Arrays.sort's stability to retain creation order in cases where
// cookies have same path length.
return -1;
return 0;
}
};