diff options
Diffstat (limited to 'ext/hyperwave/hw.c')
-rw-r--r-- | ext/hyperwave/hw.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/ext/hyperwave/hw.c b/ext/hyperwave/hw.c index 274865de9d..df2a1bca05 100644 --- a/ext/hyperwave/hw.c +++ b/ext/hyperwave/hw.c @@ -2911,9 +2911,9 @@ PHP_FUNCTION(hw_new_document_from_file) fstat(fd, &sbuf); if (sbuf.st_size > BUFSIZE) { -/* off = ftell(fp); */ - len = sbuf.st_size;/* - off; */ - p = mmap(0, len, PROT_READ, MAP_PRIVATE, fd, off); + off = ftell(fp); + len = sbuf.st_size - off; + p = mmap(0, len, PROT_READ, MAP_SHARED, fd, off); if (p != (void *) MAP_FAILED) { doc->data = malloc(len); if(NULL == doc->data) { @@ -2921,7 +2921,7 @@ PHP_FUNCTION(hw_new_document_from_file) free(doc); RETURN_FALSE; } - memcpy(p, doc->data, len); + memcpy(doc->data, p, len); munmap(p, len); bcount = len; doc->size = len; |