summaryrefslogtreecommitdiff
path: root/ext/hyperwave/hw.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/hyperwave/hw.c')
-rw-r--r--ext/hyperwave/hw.c8
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;