cvs: ZendEngine2 / zend_stream.c

[email protected] ("Nuno Lopes") Wed, 28 Jan 2009 23:20:27 -0000
Newsgroups php.zend-engine.cvs
Message-ID <cvsnlopess1233184827@cvsserver>
nlopess		Wed Jan 28 23:20:27 2009 UTC

  Modified files:              
    /ZendEngine2	zend_stream.c 
  Log:
  MFB: turn the offset parameter of mmap() back to 0
  
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_stream.c?r1=1.25&r2=1.26&diff_format=u
Index: ZendEngine2/zend_stream.c
diff -u ZendEngine2/zend_stream.c:1.25 ZendEngine2/zend_stream.c:1.26
--- ZendEngine2/zend_stream.c:1.25	Fri Jan  9 17:20:56 2009
+++ ZendEngine2/zend_stream.c	Wed Jan 28 23:20:26 2009
@@ -19,7 +19,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_stream.c,v 1.25 2009/01/09 17:20:56 iliaa Exp $ */
+/* $Id: zend_stream.c,v 1.26 2009/01/28 23:20:26 nlopess Exp $ */
 
 
 #include "zend.h"
@@ -219,11 +219,18 @@
 #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;
 			}
 		}