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);
     }