ワイルドポインタのデバッグ

ワイルドポインタのバグに悩まされていた訳ですが、
数日前に寝ている間に閃いて、そのまま忘れてた事を今、
思い出しました。(´Д`;)

[yoya@dev src]$ grep union *.h
swf_fill_style.h:typedef union swf_fill_style_ {
swf_fill_style_gradient.h:typedef union swf_fill_style_gradient_ {
swf_fill_style_solid.h:typedef union swf_fill_style_solid_ {
swf_gradient.h:typedef union swf_gradient_ {
swf_gradient_record.h:typedef union swf_gradient_record_ {
swf_line_style.h:typedef union swf_line_style_ {
swf_shape_record.h:    union {
swf_shape_record_edge.h:typedef union swf_shape_record_edge_ {
swf_shape_record_end.h:typedef union swf_shape_record_end_ {
swf_shape_record_setup.h:typedef union swf_shape_record_setup_ {

swf_shape_record が可変長データかつ、タイプによって構造が変わるので、 struct と union の組み合わせで表現したのですけど、

typedef struct swf_shape_record_ {
    union {
        unsigned char first_6bits : 6;
        swf_shape_record_end_t   shape_end;
        swf_shape_record_setup_t shape_setup;
        swf_shape_record_edge_t  shape_edge;
    } shape;
    struct swf_shape_record_ *next;
} swf_shape_record_t;

その union 定義をコピペした先で、普通の struct まで union にしちゃってました。
そりゃ壊れるゎ…