diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2020-04-24 17:24:25 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2020-04-27 09:30:57 +0200 |
commit | 29968d8f992559080bc9d5d4eab37f1fad8094df (patch) | |
tree | b5f48db759b49a5d6d1615568b1708110ce4d9c1 | |
parent | b962d2e36ff3014257c8e87dfefe2a9c591568b9 (diff) | |
download | php-git-29968d8f992559080bc9d5d4eab37f1fad8094df.tar.gz |
Fix #79470: PHP incompatible with 3rd party file system on demand
We add support for Activision HSM (`IO_REPARSE_TAG_ACTIVISION_HSM`) and
VFS for Git (`IO_REPARSE_TAG_PROJFS`). The latter fixes bug #78784.
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | Zend/zend_virtual_cwd.c | 12 |
2 files changed, 15 insertions, 1 deletions
@@ -6,6 +6,10 @@ PHP NEWS . Fixed bug #79434 (PHP 7.3 and PHP-7.4 crash with NULL-pointer dereference on !CS constant). (Nikita) . Fixed bug #79477 (casting object into array creates references). (Nikita) + . Fixed bug #79470 (PHP incompatible with 3rd party file system on demand). + (cmb) + . Fixed bug #78784 (Unable to interact with files inside a VFS for Git + repository). (cmb) - DOM: . Fixed bug #78221 (DOMNode::normalize() doesn't remove empty text nodes). diff --git a/Zend/zend_virtual_cwd.c b/Zend/zend_virtual_cwd.c index c523f40dc9..253ed8c420 100644 --- a/Zend/zend_virtual_cwd.c +++ b/Zend/zend_virtual_cwd.c @@ -55,6 +55,14 @@ #define IO_REPARSE_TAG_ONEDRIVE (0x80000021L) #endif +# ifndef IO_REPARSE_TAG_ACTIVISION_HSM +# define IO_REPARSE_TAG_ACTIVISION_HSM (0x00000047L) +# endif + +# ifndef IO_REPARSE_TAG_PROJFS +# define IO_REPARSE_TAG_PROJFS (0x9000001CL) +# endif + # ifndef VOLUME_NAME_NT # define VOLUME_NAME_NT 0x2 # endif @@ -1002,7 +1010,9 @@ retry: else if (pbuffer->ReparseTag == IO_REPARSE_TAG_DEDUP || /* Starting with 1709. */ (pbuffer->ReparseTag & ~IO_REPARSE_TAG_CLOUD_MASK) == IO_REPARSE_TAG_CLOUD || - IO_REPARSE_TAG_ONEDRIVE == pbuffer->ReparseTag) { + IO_REPARSE_TAG_ONEDRIVE == pbuffer->ReparseTag || + IO_REPARSE_TAG_ACTIVISION_HSM == pbuffer->ReparseTag || + IO_REPARSE_TAG_PROJFS == pbuffer->ReparseTag) { isabsolute = 1; substitutename = malloc((len + 1) * sizeof(char)); if (!substitutename) { |