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 0f42eb1ceb
commit ae313513dd

View File

@ -106,9 +106,9 @@ public final class ClientCookieEncoder extends CookieEncoder {
if (diff != 0) { if (diff != 0) {
return diff; 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. // cookies have same path length.
return -1; return 0;
}; };
/** /**