On Thu, Aug 23, 2018 at 5:17 PM wrote: > This union was right in the middle of the buf struct: > > union { > caddr_t b_addr; /* low order core address */ > int *b_words; /* words for clearing */ > struct filsys *b_filsys; /* superblocks */ > struct dinode *b_dino; /* ilist */ > daddr_t *b_daddr; /* indirect block */ > } b_un; > There were a number of other places that did the same thing. It's > OFFICIALLY now in undefined behavior by the standard (though of course that > didn't exist in the BSD days) , > to store in one element of the union and retrieve it via another. It was still kinda frowned upon in K&R1: "It is the responsibility of the programmer to keep track of what type is currently stored in a union; the results are machine dependent if something is stored as one type and extracted as another." -- Nevin ":-)" Liber +1-847-691-1404