*** RESOLVED ***
I'm happy to say I was doing something stupid but just posting my answer in case anyone searching in future ...
Ummm .... I split the OM_SET and OM_UPDATE processing but forgot to move the code into OM_UPDATE that actually extracted the GadgetInfo from the passed message into a local variable and I was using that NULL variable when processing the update taglist ... oops
Anyway, I will still submit this example when done for people looking for an example of this stuff since there is not much around.