| His code initialized the memory as follows:\n| /* Clear second bit */\n| *cell &= ~0x02;\n| /* Set second bit randomly */\n| *cell |= ((byte) (rand () % 2)) << 1;\n|\n| Since *cell has the type "unsigned char", it cannot have a trap\n| representation. Therefore, in the original version of his code, if the\n| use of uninitialized memory had been intentional (perhaps as some\n| bizarre substitute for proper randomization?), such code would make\n| sense. However, since he's corrected the code to memset() the entire\n| lattice (presumably to 0), this code is overly complicated. The second\n| bit doesn't need to be cleared, because it's already guaranteed to be\n| clear. The "|" in the "|=" is unnecessary, because the original value\n| was already 0. Therefore, those two lines can be simplified to:\n|\n| *cell = ((byte) (rand () % 2)) << 1;\n|\n| And that change, in turn, renders the memset() unnecessary, since the\n| result no longer depends, in any way, upon the pre-existing value of\n| *cell.\n\nThe changes have been made. The initialization code now does only one\nthing: initialization of the memory allocated by allocate_lattice().