diff options
| author | Greg Beaver <cellog@php.net> | 2009-07-26 02:43:14 +0000 |
|---|---|---|
| committer | Greg Beaver <cellog@php.net> | 2009-07-26 02:43:14 +0000 |
| commit | e8d80c8bfd9894c61af2a5bc85b12ebc2fe50601 (patch) | |
| tree | 5b75e861b9f0f00f850d0f176add4dd0c41bb0d2 /ext/phar/phar_object.c | |
| parent | 96dd763df469521eddff00259d3fbaae7faa369b (diff) | |
| download | php-git-e8d80c8bfd9894c61af2a5bc85b12ebc2fe50601.tar.gz | |
fix buildFromIterator with filesystem iterator in php 6
Diffstat (limited to 'ext/phar/phar_object.c')
| -rwxr-xr-x | ext/phar/phar_object.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/ext/phar/phar_object.c b/ext/phar/phar_object.c index d7beb43de3..96376a3f4a 100755 --- a/ext/phar/phar_object.c +++ b/ext/phar/phar_object.c @@ -1669,7 +1669,21 @@ static int phar_build(zend_object_iterator *iter, void *puser TSRMLS_DC) /* {{{ case SPL_FS_INFO: case SPL_FS_FILE: #if PHP_VERSION_ID >= 60000 - fname = expand_filepath(intern->file_name.s, NULL TSRMLS_CC); + if (intern->file_name_type == IS_UNICODE) { + zval zv; + + INIT_ZVAL(zv); + Z_UNIVAL(zv) = intern->file_name; + Z_UNILEN(zv) = intern->file_name_len; + Z_TYPE(zv) = IS_UNICODE; + + zval_copy_ctor(&zv); + zval_unicode_to_string(&zv TSRMLS_CC); + fname = expand_filepath(Z_STRVAL(zv), NULL TSRMLS_CC); + ezfree(Z_UNIVAL(zv)); + } else { + fname = expand_filepath(intern->file_name.s, NULL TSRMLS_CC); + } #else fname = expand_filepath(intern->file_name, NULL TSRMLS_CC); #endif |
