diff options
Diffstat (limited to 'xmlwf/readfilemap.c')
-rw-r--r-- | xmlwf/readfilemap.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/xmlwf/readfilemap.c b/xmlwf/readfilemap.c index 42b5e038..088dda5c 100644 --- a/xmlwf/readfilemap.c +++ b/xmlwf/readfilemap.c @@ -8,6 +8,14 @@ #include <stdlib.h> #include <stdio.h> +#ifdef __WATCOMC__ +#ifndef __LINUX__ +#include <io.h> +#else +#include <unistd.h> +#endif +#endif + #ifdef __BEOS__ #include <unistd.h> #endif @@ -57,9 +65,17 @@ filemap(const char *name, 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); |