diff -urp numactl-0.9.6/libnuma.c numactl/libnuma.c --- numactl-0.9.6/libnuma.c 2006-05-23 23:20:56.000000000 +0200 +++ numactl/libnuma.c 2006-03-28 00:17:05.000000000 +0200 @@ -493,16 +493,12 @@ int numa_node_to_cpus(int node, unsigned /* if mask[0] is full shift left before adding another */ if (bits_in_mask_0 >= sizeof(mask[0])*8) { - /* 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; - } + /* shift over any previously loaded masks */ + 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; } mask[0] = (mask[0]*16) + (w - hexdigits);