>>217
エラーチェックのために変数に入れるから、それをそのまま使えるようにじゃね?

X x;
X* p = f(&x);
if(p == NULL){
error(...);
}
p->xxx = ...