X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5e9f25245196606cd95bf05897c1d6720f6db081..07fb285c521527e383f2d1090f7f41f561bcd8fd:/src/expat/xmlwf/readfilemap.c diff --git a/src/expat/xmlwf/readfilemap.c b/src/expat/xmlwf/readfilemap.c index 64c69850c2..bd32b93414 100644 --- a/src/expat/xmlwf/readfilemap.c +++ b/src/expat/xmlwf/readfilemap.c @@ -8,6 +8,18 @@ #include #include +#ifdef __WATCOMC__ +#ifndef __LINUX__ +#include +#else +#include +#endif +#endif + +#ifdef __BEOS__ +#include +#endif + #ifndef S_ISREG #ifndef S_IFREG #define S_IFREG _S_IFREG @@ -46,16 +58,26 @@ filemap(const char *name, } if (fstat(fd, &sb) < 0) { perror(name); + close(fd); return 0; } if (!S_ISREG(sb.st_mode)) { fprintf(stderr, "%s: not a regular file\n", name); + close(fd); return 0; } nbytes = sb.st_size; + /* malloc will return NULL with nbytes == 0, handle files with size 0 */ + if (nbytes == 0) { + static const char c = '\0'; + processor(&c, 0, name, arg); + close(fd); + return 1; + } p = malloc(nbytes); if (!p) { fprintf(stderr, "%s: out of memory\n", name); + close(fd); return 0; } n = read(fd, p, nbytes);