diff --git a/tsk/fs/xfs.cpp b/tsk/fs/xfs.cpp
index a917702f3a1622dab919698b0dd93a227c8e274c..8d78be7f7c2395555bafc2722aa3cd862c442eba 100644
--- a/tsk/fs/xfs.cpp
+++ b/tsk/fs/xfs.cpp
@@ -283,13 +283,14 @@ TSK_FS_META_FLAG_ENUM xfs_inode_getallocflag(
         if(dino_aginum >= irecs[cur_key].ir_startino
             && dino_aginum - irecs[cur_key].ir_startino < 64)
         {
-            if (tsk_verbose) { tsk_fprintf(stderr, "found at cur_inobt_block->bb_level = %u, cur_key = %u, irecs[cur_key].ir_startino = %u, irecs[cur_key].ir_free = %" PRIx64 " \n",
-                cur_inobt_block->bb_level, cur_key, irecs[cur_key].ir_startino, irecs[cur_key].ir_free); }
+            uint8_t rel_inum = dino_aginum - irecs[cur_key].ir_startino;
+
+            if (tsk_verbose) { tsk_fprintf(stderr, "found at cur_inobt_block->bb_level = %u, cur_key = %u, irecs[cur_key].ir_startino = %u, irecs[cur_key].ir_free = %" PRIx64 ", rel_inum = %u \n",
+                cur_inobt_block->bb_level, cur_key, irecs[cur_key].ir_startino, irecs[cur_key].ir_free, rel_inum); }
 
             free(cur_inobt_block);
 
-            uint8_t rel_inum = dino_aginum - irecs[cur_key].ir_startino;
-            if (irecs[cur_key].ir_free & (1 << rel_inum))
+            if (irecs[cur_key].ir_free & ((uint64_t) 1 << rel_inum))
                 return TSK_FS_META_FLAG_UNALLOC;
             else
                 return TSK_FS_META_FLAG_ALLOC;