if (!strncmp((char *)(PillDBPtr - (DATA1 & 0x0F)-(DATA1 >> 4)), drec.bcdRXCheck, (DATA1 >> 4))) Could anyone suggest why the above statement would evaluate to true on the following conditions. PillDBPtr = 0x201F DATA1 = 0x66 drec.bcdRXCheck => 0x00, 0x04, 0x50, 0x51, 0x36, 0x01 Data Locations starting at 0x2010: 00 43 28 00 00 00 00 00 00 30 04 51 36 10 50 66 What appears to be happening is that the equation evaluates the first byte, 0x2003 and bdrec.bcdRXCheck, and discontinues the evalution. Since the first bytes equate it evaluates to true. If I change this byte in either location if evaluates to false. -Please help.
if (!strncmp((char *)(PillDBPtr - (DATA1 & 0x0F)-(DATA1 >> 4)), drec.bcdRXCheck, (DATA1 >> 4)))
The reason that strncmp STOPS when it sees a nul (00) My god, how did I miss this! I'm losing it. - Mark
I think you've just illustrated your point about the obfuscated code: it was soooooooooo complicated, you assumed the error must be in there somewhere and missed the "obvious" answer! (I hope that reads OK - it's supposed to be a compliment) "Eschew obfuscation!"