From 4cab8ee073b37eda43ee39d828293bb506d39623 Mon Sep 17 00:00:00 2001 From: amaire <amaire@smart-trade.net> Date: Wed, 24 Nov 2021 14:32:43 +0100 Subject: [PATCH] fixed NumberFormatException when core #63 was used in affinity.reserved --- .../main/java/net/openhft/affinity/AffinityLock.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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); }