background image: make sure to close the farbfeld file on error
This commit is contained in:
parent
1a8175a337
commit
faac64e392
|
@ -16,23 +16,20 @@ loadff(const char *filename)
|
||||||
FILE *f = fopen(filename, "rb");
|
FILE *f = fopen(filename, "rb");
|
||||||
|
|
||||||
if (f == NULL) {
|
if (f == NULL) {
|
||||||
fprintf(stderr, "could not load background image.\n");
|
fprintf(stderr, "could not load background image.\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fread(hdr, sizeof(*hdr), LEN(hdr), f) != LEN(hdr))
|
if (fread(hdr, sizeof(*hdr), LEN(hdr), f) != LEN(hdr)) {
|
||||||
if (ferror(f)) {
|
fprintf(stderr, "fread: %s\n", ferror(f) ? "" : "Unexpected end of file reading header");
|
||||||
fprintf(stderr, "fread:");
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
fprintf(stderr, "fread: Unexpected end of file\n");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (memcmp("farbfeld", hdr, sizeof("farbfeld") - 1)) {
|
if (memcmp("farbfeld", hdr, sizeof("farbfeld") - 1)) {
|
||||||
fprintf(stderr, "Invalid magic value");
|
fprintf(stderr, "Invalid magic value\n");
|
||||||
return NULL;
|
fclose(f);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
w = ntohl(hdr[2]);
|
w = ntohl(hdr[2]);
|
||||||
|
@ -40,15 +37,11 @@ loadff(const char *filename)
|
||||||
size = w * h;
|
size = w * h;
|
||||||
data = malloc(size * sizeof(uint64_t));
|
data = malloc(size * sizeof(uint64_t));
|
||||||
|
|
||||||
if (fread(data, sizeof(uint64_t), size, f) != size)
|
if (fread(data, sizeof(uint64_t), size, f) != size) {
|
||||||
if (ferror(f)) {
|
fprintf(stderr, "fread: %s\n", ferror(f) ? "" : "Unexpected end of file reading data");
|
||||||
fprintf(stderr, "fread:");
|
fclose(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
fprintf(stderr, "fread: Unexpected end of file");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
|
@ -91,8 +84,7 @@ bginit()
|
||||||
bgimg = XCreatePixmap(xw.dpy, xw.win, bgxi->width, bgxi->height,
|
bgimg = XCreatePixmap(xw.dpy, xw.win, bgxi->width, bgxi->height,
|
||||||
DefaultDepth(xw.dpy, xw.scr));
|
DefaultDepth(xw.dpy, xw.scr));
|
||||||
#endif // ALPHA_PATCH
|
#endif // ALPHA_PATCH
|
||||||
XPutImage(xw.dpy, bgimg, dc.gc, bgxi, 0, 0, 0, 0, bgxi->width,
|
XPutImage(xw.dpy, bgimg, dc.gc, bgxi, 0, 0, 0, 0, bgxi->width, bgxi->height);
|
||||||
bgxi->height);
|
|
||||||
XDestroyImage(bgxi);
|
XDestroyImage(bgxi);
|
||||||
XSetTile(xw.dpy, xw.bggc, bgimg);
|
XSetTile(xw.dpy, xw.bggc, bgimg);
|
||||||
XSetFillStyle(xw.dpy, xw.bggc, FillTiled);
|
XSetFillStyle(xw.dpy, xw.bggc, FillTiled);
|
||||||
|
@ -101,4 +93,4 @@ bginit()
|
||||||
MODBIT(xw.attrs.event_mask, 1, PropertyChangeMask);
|
MODBIT(xw.attrs.event_mask, 1, PropertyChangeMask);
|
||||||
XChangeWindowAttributes(xw.dpy, xw.win, CWEventMask, &xw.attrs);
|
XChangeWindowAttributes(xw.dpy, xw.win, CWEventMask, &xw.attrs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue