diff --git a/affinity/src/main/java/net/openhft/affinity/AffinityLock.java b/affinity/src/main/java/net/openhft/affinity/AffinityLock.java index fc2eae07c..e856570c2 100644 --- a/affinity/src/main/java/net/openhft/affinity/AffinityLock.java +++ b/affinity/src/main/java/net/openhft/affinity/AffinityLock.java @@ -133,9 +133,13 @@ private static BitSet getReservedAffinity0() { 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; + if(end < 16) { + longs[i] = Long.parseLong(reservedAffinity.substring(0, end), 16); + } else { + longs[i] = Long.parseLong(reservedAffinity.substring(end - 16, end - 8), 16) << 32L; + longs[i] |= Long.parseLong(reservedAffinity.substring(end - 8, end), 16); + end -= 16; + } } return BitSet.valueOf(longs); }