diff -Naurp numactl-0.9.7-orig/libnuma.c numactl-0.9.7-fix/libnuma.c --- numactl-0.9.7-orig/libnuma.c 2006-03-30 12:27:29.000000000 -0500 +++ numactl-0.9.7-fix/libnuma.c 2006-03-30 16:31:13.000000000 -0500 @@ -491,19 +491,18 @@ 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++; - bits_in_mask_0 = 0; - mask[0] = 0; + /* skip any leading zeros */ + if (prev || mask[0]){ + /* shift over any previously loaded masks */ + memmove(mask+mask_words+1, mask+mask_words, + sizeof(mask[0]) * mask_words); + mask_words++; + bits_in_mask_0 = 0; + mask[0] = 0; + prev = 1; + } } mask[0] = (mask[0]*16) + (w - hexdigits);