1543
let's review this patch history again. with longer output context. and the knowledge that static memory is zero-initialised whether you want this or not.
1550
let's review this patch history again.
1553
so the default context reuse is right at the top of the function. if there is one, it bumps the refcount, points and returns, everything's good
libusb_init locks around a global lock, so things in it are not simultaneous.
the check if (ctx || !usbi_default_context) ... I think this is saying to only execute the block if a new context is being made? but isn't that always true? it replaced if (!ctx) which says, only if this is the default context.
let's see if the block is always true.
if ctx is nonzero, that's the normal case. then edge cases would be ctx is zero.
if ctx is zero, then there's a block that checks for usbi_default_context being nonzero, and short-circuits, returning.
so, after that block, usbi_default_context is zero if ctx is zero.
therefore, ctx || !usbi_default_context ....
uhh is saying ctx || (!ctx && !usbi_default_context)
and we just said that those two being zero, one implies the other
so ctx || !ctx, it would always be true.
hard to verify. 4 cases, 4 combinations of nonzeroness.
1 is eliminated by the short-circuit: !ctx, +dflt
leaves 3: ctx, dflt; ctx, !dflt; !ctx, !dflt
1601
1603
boolean logic! woot! oh man my whole universe is partial truth tables right now
omigod trues and falses, everywhere
I just so badly want to question whether true is _really_ true, or false _really_ false. could a 1 or a 0 be a trick? you never know!
!ctx, dflt <- eliminated by short circuit?
remaining? -> ctx, dflt; ctx, !dflt; !ctx, !dflt
1606
suddenly taking a break