]> granicus.if.org Git - php/commitdiff
MFB: turn the offset parameter of mmap() back to 0
authorNuno Lopes <nlopess@php.net>
Wed, 28 Jan 2009 23:20:26 +0000 (23:20 +0000)
committerNuno Lopes <nlopess@php.net>
Wed, 28 Jan 2009 23:20:26 +0000 (23:20 +0000)
Zend/zend_stream.c

index 0c76ba70b4b683800a06d0424bc1edac2a25a0bb..30bcda47653b40ed4ba30adb067de16d380af452 100644 (file)
@@ -219,11 +219,18 @@ ZEND_API int zend_stream_fixup(zend_file_handle *file_handle, char **buf, size_t
 #if HAVE_MMAP
                if (file_handle->handle.fp) {
                        /*  *buf[size] is zeroed automatically by the kernel */
-                       *buf = mmap(0, size + ZEND_MMAP_AHEAD, PROT_READ, MAP_PRIVATE, fileno(file_handle->handle.fp), ftell(file_handle->handle.fp));
+                       *buf = mmap(0, size + ZEND_MMAP_AHEAD, PROT_READ, MAP_PRIVATE, fileno(file_handle->handle.fp), 0);
                        if (*buf != MAP_FAILED) {
-                               file_handle->handle.stream.mmap.len = size;
+                               long offset = ftell(file_handle->handle.fp);
                                file_handle->handle.stream.mmap.map = *buf;
+
+                               if (offset != -1) {
+                                       *buf += offset;
+                                       size -= offset;
+                               }
                                file_handle->handle.stream.mmap.buf = *buf;
+                               file_handle->handle.stream.mmap.len = size;
+
                                goto return_mapped;
                        }
                }