- FILE *f;
- struct cookie *c;
- if (!(f=malloc(sizeof *f + sizeof *c))) return 0;
- memset(f, 0, sizeof *f + sizeof *c);
- f->cookie = c = (void *)(f+1);
+ struct wms_FILE *f;
+ wchar_t *buf;
+
+ if (!(f=malloc(sizeof *f))) return 0;
+ if (!(buf=malloc(sizeof *buf))) {
+ free(f);
+ return 0;
+ }
+ memset(&f->f, 0, sizeof f->f);
+ memset(&f->c, 0, sizeof f->c);
+ f->f.cookie = &f->c;