summaryrefslogtreecommitdiff
path: root/ext/phar/phar_object.c
diff options
context:
space:
mode:
authorGreg Beaver <cellog@php.net>2009-07-26 02:43:14 +0000
committerGreg Beaver <cellog@php.net>2009-07-26 02:43:14 +0000
commite8d80c8bfd9894c61af2a5bc85b12ebc2fe50601 (patch)
tree5b75e861b9f0f00f850d0f176add4dd0c41bb0d2 /ext/phar/phar_object.c
parent96dd763df469521eddff00259d3fbaae7faa369b (diff)
downloadphp-git-e8d80c8bfd9894c61af2a5bc85b12ebc2fe50601.tar.gz
fix buildFromIterator with filesystem iterator in php 6
Diffstat (limited to 'ext/phar/phar_object.c')
-rwxr-xr-xext/phar/phar_object.c16
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