summaryrefslogtreecommitdiffstats
path: root/php-wip.patch
diff options
context:
space:
mode:
Diffstat (limited to 'php-wip.patch')
-rw-r--r--php-wip.patch110
1 files changed, 44 insertions, 66 deletions
diff --git a/php-wip.patch b/php-wip.patch
index 6aee5a9..d6e5131 100644
--- a/php-wip.patch
+++ b/php-wip.patch
@@ -1,69 +1,47 @@
-diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c
-index 14ae75e..c7f157c 100644
---- a/Zend/zend_exceptions.c
-+++ b/Zend/zend_exceptions.c
-@@ -560,7 +560,7 @@ ZEND_METHOD(exception, getPrevious)
- RETURN_ZVAL(previous, 1, 0);
+diff -up php-5.5.6RC1/ext/opcache/ZendAccelerator.c.wip php-5.5.6RC1/ext/opcache/ZendAccelerator.c
+--- php-5.5.6RC1/ext/opcache/ZendAccelerator.c.wip 2013-10-29 12:09:06.000000000 +0100
++++ php-5.5.6RC1/ext/opcache/ZendAccelerator.c 2013-11-04 14:23:59.395722970 +0100
+@@ -145,9 +145,33 @@ static inline int is_cacheable_stream_pa
+ memcmp(filename, "phar://", sizeof("phar://") - 1) == 0;
}
--int zend_spprintf(char **message, int max_len, char *format, ...) /* {{{ */
-+int zend_spprintf(char **message, int max_len, const char *format, ...) /* {{{ */
++#ifdef COMPILE_DL_PHAR
++static typeof(phar_resolve_alias) *opcache_phar_resolve_alias;
++#else
++# define opcache_phar_resolve_alias phar_resolve_alias
++#endif
++
+ static inline int is_phar_relative_alias_path(const char *filename, char **alias, int *alias_len)
{
- va_list arg;
- int len;
-@@ -732,7 +732,7 @@ ZEND_API zend_class_entry *zend_get_error_exception(TSRMLS_D) /* {{{ */
- }
- /* }}} */
-
--ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, char *message, long code TSRMLS_DC) /* {{{ */
-+ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, const char *message, long code TSRMLS_DC) /* {{{ */
- {
- zval *ex;
-
-@@ -760,7 +760,7 @@ ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, char *messa
- }
- /* }}} */
-
--ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, char *format, ...) /* {{{ */
-+ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, const char *format, ...) /* {{{ */
- {
- va_list arg;
- char *message;
-@@ -775,7 +775,7 @@ ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long cod
- }
- /* }}} */
-
--ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, char *message, long code, int severity TSRMLS_DC) /* {{{ */
-+ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, const char *message, long code, int severity TSRMLS_DC) /* {{{ */
- {
- zval *ex = zend_throw_exception(exception_ce, message, code TSRMLS_CC);
- zend_update_property_long(default_exception_ce, ex, "severity", sizeof("severity")-1, severity TSRMLS_CC);
-diff --git a/Zend/zend_exceptions.h b/Zend/zend_exceptions.h
-index 8263353..81c8a1f 100644
---- a/Zend/zend_exceptions.h
-+++ b/Zend/zend_exceptions.h
-@@ -40,12 +40,12 @@ ZEND_API void zend_register_default_classes(TSRMLS_D);
-
- /* exception_ce NULL or zend_exception_get_default() or a derived class
- * message NULL or the message of the exception */
--ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, char *message, long code TSRMLS_DC);
--ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, char *format, ...);
-+ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, const char *message, long code TSRMLS_DC);
-+ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, const char *format, ...);
- ZEND_API void zend_throw_exception_object(zval *exception TSRMLS_DC);
- ZEND_API void zend_clear_exception(TSRMLS_D);
-
--ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, char *message, long code, int severity TSRMLS_DC);
-+ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, const char *message, long code, int severity TSRMLS_DC);
-
- extern ZEND_API void (*zend_throw_exception_hook)(zval *ex TSRMLS_DC);
-
-@@ -53,7 +53,7 @@ extern ZEND_API void (*zend_throw_exception_hook)(zval *ex TSRMLS_DC);
- ZEND_API void zend_exception_error(zval *exception, int severity TSRMLS_DC);
-
- /* do not export, in php it's available thru spprintf directly */
--int zend_spprintf(char **message, int max_len, char *format, ...);
-+int zend_spprintf(char **message, int max_len, const char *format, ...);
-
- END_EXTERN_C()
-
+- if (memcmp(filename, "phar://", sizeof("phar://") - 1) == 0
++#ifdef COMPILE_DL_PHAR
++ static int pharloaded = -1;
++
++ /* Only once, retrieve phar_resolve_alias from phar module if loaded */
++ if (pharloaded < 0) {
++ zend_module_entry *phar;
++
++ if (zend_hash_find(&module_registry, "phar", 5, (void**)&phar) == SUCCESS) {
++ opcache_phar_resolve_alias = DL_FETCH_SYMBOL(phar->handle, "phar_resolve_alias");
++ pharloaded = (opcache_phar_resolve_alias ? 1 : 0);
++ } else {
++ pharloaded = 0;
++ }
++ }
++ if (pharloaded &&
++#else
++ if (
++#endif
++ memcmp(filename, "phar://", sizeof("phar://") - 1) == 0
+ && filename[sizeof("phar://") - 1] != '\0' && filename[sizeof("phar://") - 1] != '/') {
+ char *slash;
+ *alias = (char*)filename + sizeof("phar://") - 1;
+@@ -1056,7 +1080,7 @@ char *accel_make_persistent_key_ex(zend_
+ if (is_phar_relative_alias_path(file_handle->filename, &alias, &alias_len)) {
+ char *phar_path;
+ int phar_path_len;
+- if (phar_resolve_alias(alias, alias_len, &phar_path, &phar_path_len TSRMLS_CC) == SUCCESS) {
++ if (opcache_phar_resolve_alias(alias, alias_len, &phar_path, &phar_path_len TSRMLS_CC) == SUCCESS) {
+ int filename_len = strlen(file_handle->filename);
+ memcpy(ZCG(key), "phar://", sizeof("phar://") -1);
+ memcpy(ZCG(key) + sizeof("phar://") - 1, phar_path, phar_path_len);