- Fixed bug #48087 (call_user_method() invalid free of arguments). (Felipe)
- Fixed bug #48060 (pdo_pgsql - large objects are returned as empty). (Matteo)
+- Fixed bug #48034 (PHP crashes when script is 8192 (8KB) bytes long). (Dmitry)
- Fixed bug #48023 (spl_autoload_register didn't store closures). (Etienne)
- Fixed bug #48004 (Error handler prevents creation of default object).
(Dmitry)
#include "SAPI.h"
#include "rfc1867.h"
+
+#if HAVE_SYS_MMAN_H
+# include <sys/mman.h>
+# ifndef PAGE_SIZE
+# define PAGE_SIZE 4096
+# endif
+#endif
/* }}} */
PHPAPI int (*php_register_internal_extensions_func)(TSRMLS_D) = php_register_internal_extensions;
handle->handle.stream.isatty = 0;
/* can we mmap immeadiately? */
memset(&handle->handle.stream.mmap, 0, sizeof(handle->handle.stream.mmap));
- len = php_zend_stream_fsizer(stream TSRMLS_CC) + ZEND_MMAP_AHEAD;
- if (php_stream_mmap_possible(stream)
+ len = php_zend_stream_fsizer(stream TSRMLS_CC);
+ if (len != 0
+ && ((len - 1) % PAGE_SIZE) <= PAGE_SIZE - ZEND_MMAP_AHEAD
+ && php_stream_mmap_possible(stream)
&& (p = php_stream_mmap_range(stream, 0, len, PHP_STREAM_MAP_MODE_SHARED_READONLY, &mapped_len)) != NULL) {
handle->handle.stream.closer = php_zend_stream_mmap_closer;
handle->handle.stream.mmap.buf = p;