diff -Naurp numactl-0.9.6/libnuma.c numactl-0.9.6-fix/libnuma.c
--- numactl-0.9.6/libnuma.c	2006-03-28 03:28:09.000000000 -0500
+++ numactl-0.9.6-fix/libnuma.c	2006-03-30 11:23:33.000000000 -0500
@@ -491,12 +491,17 @@ int numa_node_to_cpus(int node, unsigned
                         goto out;
 		}
 
+		/* skip any leading zeros */
+		if (!prev && !(w - hexdigits))
+		    continue;
+		prev = 1;
+
 		/* if mask[0] is full shift left before adding another */
 		if (bits_in_mask_0 >= sizeof(mask[0])*8) {
 			/* shift over any previously loaded masks */
+			memmove(mask+mask_words+1, mask+mask_words,
+				sizeof(mask[0]) * mask_words);
 			mask_words++;
-			for (n = mask_words; n > 0; n--)
-				memmove(mask+n, mask+n-1, sizeof(mask[0]));
 			bits_in_mask_0 = 0;
 			mask[0] = 0;
 		}


