diff --git a/affinity/src/main/java/net/openhft/affinity/AffinityLock.java b/affinity/src/main/java/net/openhft/affinity/AffinityLock.java index f2a8f10f7..7f4018e1b 100644 --- a/affinity/src/main/java/net/openhft/affinity/AffinityLock.java +++ b/affinity/src/main/java/net/openhft/affinity/AffinityLock.java @@ -128,8 +128,14 @@ private static BitSet getReservedAffinity0() { return reserverable; } - long[] longs = new long[1]; - longs[0] = Long.parseLong(reservedAffinity, 16); + reservedAffinity = reservedAffinity.trim(); + long[] longs = new long[1 + (reservedAffinity.length() - 1) / 16]; + int end = reservedAffinity.length(); + for(int i = 0; i < longs.length ; i++) { + int begin = Math.max(0, end - 16); + longs[i] = Long.parseLong(reservedAffinity.substring(begin, end), 16); + end = begin; + } return BitSet.valueOf(longs); }