fix a crasher with gtemplate_new dereferencing a freed pointer, and harden rule for creating a struct