Jens, To add a little more detail:
I could easily provide a series of patches: (1) fix plugin.thirft and the code in compiler/cpp so that it uses unions correctly. (2) then for each language, provide a fix that enforces in __set_<field> and TProtocol::{write,read} that unions obey the "exactly one field" contract. I have #1 already written (just finished it and it passes unit-tests). --chet--