[PHP-CVS] cvs: php-src(PHP_5_3) /ext/phar phar.phar phar_object.c

2008-08-31 Thread Greg Beaver
cellog  Sun Aug 31 06:31:53 2008 UTC

  Modified files:  (Branch: PHP_5_3)
/php-src/ext/phar   phar.phar phar_object.c 
  Log:
  remove unused variables, merge from pecl/phar
  
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar.phar?r1=1.7.2.37r2=1.7.2.38diff_format=u
Index: php-src/ext/phar/phar.phar
diff -u php-src/ext/phar/phar.phar:1.7.2.37 php-src/ext/phar/phar.phar:1.7.2.38
--- php-src/ext/phar/phar.phar:1.7.2.37 Sun Aug 31 06:28:01 2008
+++ php-src/ext/phar/phar.phar  Sun Aug 31 06:31:53 2008
@@ -1171,8 +1171,8 @@
 new PharCommand($argc, $argv);
 
 __HALT_COMPILER(); ?
-6-+6+ 
ž¶Â²Ø䂱÷¡ˆJÉþžs±æêÔ*,8ƒW——?°!~ý븅ˆY…åBós„.coîd!¨`w¡ŽóLæȹBÀ’í.å[ža‘äÙs\í¹
 gߜ×
 „ób„náNŸ@@ -1229,4 +1229,4 @@
 ùU™NøÖ[EMAIL PROTECTED][EMAIL PROTECTED] 
¬ËaYšº[Ã⎬mòvOëý]¸¹)×soS…jßZæ/]ûô‚Þv¿Ç½T%æ:ýÚ)cÚv]¶Ebô«ŒÐӛ*€Çê=KÕO)ò)‘«Ë-ԍ]µLí‹·¡7µ¾Í¨.î
Ÿšzÿ.jß?8Tù®,˜:«Äa·éï¤Á»hg•
 ±µÉH¨#[T5$ÜßÞ¶LÐâ¯z4ʃ¼è)ÿLuÒñxï;ñ©Æø³;TMe,¯¿{}4b,[EMAIL PROTECTED]
íÑ藵ïtúÎþ®øÚ÷Eí»ú¡ÃÏà›Ÿ‚ÇGx‰îӟ᧾óãæ]Ž¢Õ~f–I|øðP› 
j„7l1ØÛPšH†üéÅiGH¬5´¯’$ß/rªýëІ~ѐ›úgìªz²¢ÎÛ¦pu€Šùäûù;â9³™䂯;[EMAIL 
PROTECTED]
-Pàø3C°\ No newline at end of file
+Pàø3C°\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar_object.c?r1=1.266.2.40r2=1.266.2.41diff_format=u
Index: php-src/ext/phar/phar_object.c
diff -u php-src/ext/phar/phar_object.c:1.266.2.40 
php-src/ext/phar/phar_object.c:1.266.2.41
--- php-src/ext/phar/phar_object.c:1.266.2.40   Sun Aug 31 06:26:19 2008
+++ php-src/ext/phar/phar_object.c  Sun Aug 31 06:31:53 2008
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: phar_object.c,v 1.266.2.40 2008/08/31 06:26:19 cellog Exp $ */
+/* $Id: phar_object.c,v 1.266.2.41 2008/08/31 06:31:53 cellog Exp $ */
 
 #include phar_internal.h
 #include func_interceptors.h
@@ -1393,7 +1393,7 @@
 {
zval **value;
zend_uchar key_type;
-   zend_bool is_splfileinfo = 0, close_fp = 1;
+   zend_bool close_fp = 1;
ulong int_key;
struct _phar_t *p_obj = (struct _phar_t*) puser;
uint str_key_len, base_len = p_obj-l, fname_len;
@@ -1505,7 +1505,6 @@
}
 
save = fname;
-   is_splfileinfo = 1;
goto phar_spl_fileinfo;
case SPL_FS_INFO:
case SPL_FS_FILE:
@@ -1516,7 +1515,6 @@
 #endif
fname_len = strlen(fname);
save = fname;
-   is_splfileinfo = 1;
goto phar_spl_fileinfo;
}
}



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_3) /ext/phar phar.phar phar_object.c

2008-08-31 Thread Greg Beaver
cellog  Sun Aug 31 06:38:10 2008 UTC

  Modified files:  (Branch: PHP_5_3)
/php-src/ext/phar   phar.phar phar_object.c 
  Log:
  merge minor optimization removing strlen from pecl/phar
  
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar.phar?r1=1.7.2.38r2=1.7.2.39diff_format=u
Index: php-src/ext/phar/phar.phar
diff -u php-src/ext/phar/phar.phar:1.7.2.38 php-src/ext/phar/phar.phar:1.7.2.39
--- php-src/ext/phar/phar.phar:1.7.2.38 Sun Aug 31 06:31:53 2008
+++ php-src/ext/phar/phar.phar  Sun Aug 31 06:38:09 2008
@@ -1171,8 +1171,8 @@
 new PharCommand($argc, $argv);
 
 __HALT_COMPILER(); ?
-6-+6+ 
ž¶Â²Ø䂱÷¡ˆJÉþžs±æêÔ*,8ƒW——?°!~ý븅ˆY…åBós„.coîd!¨`w¡ŽóLæȹBÀ’í.å[ža‘äÙs\í¹
 gߜ×
 „ób„náNŸ@@ -1229,4 +1229,4 @@
 ùU™NøÖ[EMAIL PROTECTED][EMAIL PROTECTED] 
¬ËaYšº[Ã⎬mòvOëý]¸¹)×soS…jßZæ/]ûô‚Þv¿Ç½T%æ:ýÚ)cÚv]¶Ebô«ŒÐӛ*€Çê=KÕO)ò)‘«Ë-ԍ]µLí‹·¡7µ¾Í¨.î
Ÿšzÿ.jß?8Tù®,˜:«Äa·éï¤Á»hg•
 ±µÉH¨#[T5$ÜßÞ¶LÐâ¯z4ʃ¼è)ÿLuÒñxï;ñ©Æø³;TMe,¯¿{}4b,[EMAIL PROTECTED]
íÑ藵ïtúÎþ®øÚ÷Eí»ú¡ÃÏà›Ÿ‚ÇGx‰îӟ᧾óãæ]Ž¢Õ~f–I|øðP› 
j„7l1ØÛPšH†üéÅiGH¬5´¯’$ß/rªýëІ~ѐ›úgìªz²¢ÎÛ¦pu€Šùäûù;â9³™䂯;[EMAIL 
PROTECTED]
-Pàø3C°\ No newline at end of file
+Pàø3C°\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar_object.c?r1=1.266.2.41r2=1.266.2.42diff_format=u
Index: php-src/ext/phar/phar_object.c
diff -u php-src/ext/phar/phar_object.c:1.266.2.41 
php-src/ext/phar/phar_object.c:1.266.2.42
--- php-src/ext/phar/phar_object.c:1.266.2.41   Sun Aug 31 06:31:53 2008
+++ php-src/ext/phar/phar_object.c  Sun Aug 31 06:38:09 2008
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: phar_object.c,v 1.266.2.41 2008/08/31 06:31:53 cellog Exp $ */
+/* $Id: phar_object.c,v 1.266.2.42 2008/08/31 06:38:09 cellog Exp $ */
 
 #include phar_internal.h
 #include func_interceptors.h
@@ -1984,6 +1984,7 @@
char *error;
const char *pcr_error;
int ext_len = ext ? strlen(ext) : 0;
+   int oldname_len;
phar_archive_data **pphar = NULL;
 
if (!ext) {
@@ -2049,12 +2050,13 @@
oldpath = estrndup(phar-fname, phar-fname_len);
oldname = zend_memrchr(phar-fname, '/', phar-fname_len);
++oldname;
+   oldname_len = strlen(oldname);
 
-   basename = estrndup(oldname, strlen(oldname));
+   basename = estrndup(oldname, oldname_len);
spprintf(newname, 0, %s.%s, strtok(basename, .), ext);
efree(basename);
 
-   basepath = estrndup(oldpath, strlen(oldpath) - strlen(oldname));
+   basepath = estrndup(oldpath, (strlen(oldpath) - oldname_len));
phar-fname_len = spprintf(newpath, 0, %s%s, basepath, newname);
phar-fname = newpath;
phar-ext = newpath + phar-fname_len - strlen(ext) - 1;



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_3) /ext/phar phar.phar phar_object.c

2008-08-31 Thread Greg Beaver
cellog  Sun Aug 31 06:58:05 2008 UTC

  Modified files:  (Branch: PHP_5_3)
/php-src/ext/phar   phar.phar phar_object.c 
  Log:
  fix compile warning in PHP  6.0
  
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar.phar?r1=1.7.2.41r2=1.7.2.42diff_format=u
Index: php-src/ext/phar/phar.phar
diff -u php-src/ext/phar/phar.phar:1.7.2.41 php-src/ext/phar/phar.phar:1.7.2.42
--- php-src/ext/phar/phar.phar:1.7.2.41 Sun Aug 31 06:51:49 2008
+++ php-src/ext/phar/phar.phar  Sun Aug 31 06:58:04 2008
@@ -1171,8 +1171,8 @@
 new PharCommand($argc, $argv);
 
 __HALT_COMPILER(); ?
-6-+6+ 
ž¶Â²Ø䂱÷¡ˆJÉþžs±æêÔ*,8ƒW——?°!~ý븅ˆY…åBós„.coîd!¨`w¡ŽóLæȹBÀ’í.å[ža‘äÙs\í¹
 gߜ×
 „ób„náNŸ@@ -1229,4 +1229,4 @@
 ùU™NøÖ[EMAIL PROTECTED][EMAIL PROTECTED] 
¬ËaYšº[Ã⎬mòvOëý]¸¹)×soS…jßZæ/]ûô‚Þv¿Ç½T%æ:ýÚ)cÚv]¶Ebô«ŒÐӛ*€Çê=KÕO)ò)‘«Ë-ԍ]µLí‹·¡7µ¾Í¨.î
Ÿšzÿ.jß?8Tù®,˜:«Äa·éï¤Á»hg•
 ±µÉH¨#[T5$ÜßÞ¶LÐâ¯z4ʃ¼è)ÿLuÒñxï;ñ©Æø³;TMe,¯¿{}4b,[EMAIL PROTECTED]
íÑ藵ïtúÎþ®øÚ÷Eí»ú¡ÃÏà›Ÿ‚ÇGx‰îӟ᧾óãæ]Ž¢Õ~f–I|øðP› 
j„7l1ØÛPšH†üéÅiGH¬5´¯’$ß/rªýëІ~ѐ›úgìªz²¢ÎÛ¦pu€Šùäûù;â9³™䂯;[EMAIL 
PROTECTED]
-Pàø3C°\ No newline at end of file
+Pàø3C°\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar_object.c?r1=1.266.2.43r2=1.266.2.44diff_format=u
Index: php-src/ext/phar/phar_object.c
diff -u php-src/ext/phar/phar_object.c:1.266.2.43 
php-src/ext/phar/phar_object.c:1.266.2.44
--- php-src/ext/phar/phar_object.c:1.266.2.43   Sun Aug 31 06:42:46 2008
+++ php-src/ext/phar/phar_object.c  Sun Aug 31 06:58:04 2008
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: phar_object.c,v 1.266.2.43 2008/08/31 06:42:46 cellog Exp $ */
+/* $Id: phar_object.c,v 1.266.2.44 2008/08/31 06:58:04 cellog Exp $ */
 
 #include phar_internal.h
 #include func_interceptors.h
@@ -1448,7 +1448,12 @@
}
 
if (key_type  9) { /* IS_UNICODE == 10 */
+#if PHP_VERSION_ID  6
+/* this can never happen, but fixes a compile warning */
+   spprintf(str_key, 0, %s, key);
+#else
spprintf(str_key, 0, %v, key);
+#endif
} else {
PHAR_STR(key, str_key);
}
@@ -1575,7 +1580,12 @@
}
 
if (key_type  9) { /* IS_UNICODE == 10 */
+#if PHP_VERSION_ID  6
+/* this can never happen, but fixes a compile warning */
+   spprintf(str_key, 0, %s, key);
+#else
spprintf(str_key, 0, %v, key);
+#endif
} else {
PHAR_STR(key, str_key);
}



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_3) /ext/phar phar.phar phar_object.c /ext/phar/tests phar_buildfromdirectory4.phpt

2008-06-22 Thread Greg Beaver
cellog  Mon Jun 23 04:00:23 2008 UTC

  Modified files:  (Branch: PHP_5_3)
/php-src/ext/phar   phar.phar phar_object.c 
/php-src/ext/phar/tests phar_buildfromdirectory4.phpt 
  Log:
  true fix for potential segfault in phar_build
  
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar.phar?r1=1.7.2.25r2=1.7.2.26diff_format=u
Index: php-src/ext/phar/phar.phar
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar_object.c?r1=1.266.2.30r2=1.266.2.31diff_format=u
Index: php-src/ext/phar/phar_object.c
diff -u php-src/ext/phar/phar_object.c:1.266.2.30 
php-src/ext/phar/phar_object.c:1.266.2.31
--- php-src/ext/phar/phar_object.c:1.266.2.30   Sun Jun 22 16:35:26 2008
+++ php-src/ext/phar/phar_object.c  Mon Jun 23 04:00:22 2008
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: phar_object.c,v 1.266.2.30 2008/06/22 16:35:26 sfox Exp $ */
+/* $Id: phar_object.c,v 1.266.2.31 2008/06/23 04:00:22 cellog Exp $ */
 
 #include phar_internal.h
 #include func_interceptors.h
@@ -1614,7 +1614,16 @@
if (error) {
efree(error);
}
-   contents_len = php_stream_copy_to_stream(fp, data-fp, 
PHP_STREAM_COPY_ALL);
+   /* convert to PHAR_UFP */
+   if (data-internal_file-fp_type == PHAR_MOD) {
+   php_stream_close(data-internal_file-fp);
+   }
+   data-internal_file-fp = NULL;
+   data-internal_file-fp_type = PHAR_UFP;
+   data-internal_file-offset_abs = data-internal_file-offset = 
php_stream_tell(p_obj-fp);
+   contents_len = php_stream_copy_to_stream(fp, p_obj-fp, 
PHP_STREAM_COPY_ALL);
+   data-internal_file-uncompressed_filesize = 
data-internal_file-compressed_filesize =
+   php_stream_tell(p_obj-fp) - 
data-internal_file-offset;
}
if (close_fp) {
php_stream_close(fp);
@@ -1632,15 +1641,6 @@
data-internal_file-compressed_filesize = 
data-internal_file-uncompressed_filesize = contents_len;
phar_entry_delref(data TSRMLS_CC);
 
-   if (++p_obj-count  p_obj-count % 900) {
-   /* every 900 files, flush so we remove open temp file handles, 
fixes Bug #45218 */
-   phar_flush(p_obj-p-arc.archive, 0, 0, 0, error TSRMLS_CC);
-   if (error) {
-   zend_throw_exception_ex(phar_ce_PharException, 0 
TSRMLS_CC, error);
-   efree(error);
-   return ZEND_HASH_APPLY_STOP;
-   }
-   }
return ZEND_HASH_APPLY_KEEP;
 }
 /* }}} */
@@ -1694,6 +1694,7 @@
 
if (SUCCESS != object_init_ex(iteriter, 
spl_ce_RecursiveIteratorIterator)) {
zval_ptr_dtor(iter);
+   zval_ptr_dtor(iteriter);
zend_throw_exception_ex(spl_ce_BadMethodCallException, 0 
TSRMLS_CC, Unable to instantiate directory iterator for %s, 
phar_obj-arc.archive-fname);
RETURN_FALSE;
}
@@ -1714,6 +1715,7 @@
MAKE_STD_ZVAL(regexiter);
 
if (SUCCESS != object_init_ex(regexiter, spl_ce_RegexIterator)) 
{
+   zval_ptr_dtor(iteriter);
zval_dtor(regexiter);
zend_throw_exception_ex(spl_ce_BadMethodCallException, 
0 TSRMLS_CC, Unable to instantiate regex iterator for %s, 
phar_obj-arc.archive-fname);
RETURN_FALSE;
@@ -1748,6 +1750,7 @@
efree(error);
}
} else {
+   zval_ptr_dtor(iteriter);
php_stream_close(pass.fp);
}
 }
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/phar_buildfromdirectory4.phpt?r1=1.2r2=1.2.2.1diff_format=u
Index: php-src/ext/phar/tests/phar_buildfromdirectory4.phpt
diff -u php-src/ext/phar/tests/phar_buildfromdirectory4.phpt:1.2 
php-src/ext/phar/tests/phar_buildfromdirectory4.phpt:1.2.2.1
--- php-src/ext/phar/tests/phar_buildfromdirectory4.phpt:1.2Sun May 11 
19:17:50 2008
+++ php-src/ext/phar/tests/phar_buildfromdirectory4.phptMon Jun 23 
04:00:23 2008
@@ -5,6 +5,7 @@
 --INI--
 phar.require_hash=0
 phar.readonly=0
+open_basedir=
 --FILE--
 ?php
 



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_3) /ext/phar phar.phar phar_object.c

2008-06-21 Thread Greg Beaver
cellog  Sat Jun 21 06:55:57 2008 UTC

  Modified files:  (Branch: PHP_5_3)
/php-src/ext/phar   phar.phar phar_object.c 
  Log:
  close stream on failure
  
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar.phar?r1=1.7.2.23r2=1.7.2.24diff_format=u
Index: php-src/ext/phar/phar.phar
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar_object.c?r1=1.266.2.26r2=1.266.2.27diff_format=u
Index: php-src/ext/phar/phar_object.c
diff -u php-src/ext/phar/phar_object.c:1.266.2.26 
php-src/ext/phar/phar_object.c:1.266.2.27
--- php-src/ext/phar/phar_object.c:1.266.2.26   Sat Jun 21 06:53:10 2008
+++ php-src/ext/phar/phar_object.c  Sat Jun 21 06:55:56 2008
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: phar_object.c,v 1.266.2.26 2008/06/21 06:53:10 cellog Exp $ */
+/* $Id: phar_object.c,v 1.266.2.27 2008/06/21 06:55:56 cellog Exp $ */
 
 #include phar_internal.h
 #include func_interceptors.h
@@ -1736,6 +1736,8 @@
zend_throw_exception_ex(phar_ce_PharException, 0 
TSRMLS_CC, error);
efree(error);
}
+   } else {
+   php_stream_close(pass.fp);
}
 }
 
@@ -1785,6 +1787,8 @@
zend_throw_exception_ex(phar_ce_PharException, 0 
TSRMLS_CC, error);
efree(error);
}
+   } else {
+   php_stream_close(pass.fp);
}
 
 }



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_3) /ext/phar phar.phar phar_object.c

2008-06-21 Thread Greg Beaver
cellog  Sat Jun 21 06:53:11 2008 UTC

  Modified files:  (Branch: PHP_5_3)
/php-src/ext/phar   phar.phar phar_object.c 
  Log:
  82x(./profile2) speedup for buildFrom*()
  
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar.phar?r1=1.7.2.22r2=1.7.2.23diff_format=u
Index: php-src/ext/phar/phar.phar
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar_object.c?r1=1.266.2.25r2=1.266.2.26diff_format=u
Index: php-src/ext/phar/phar_object.c
diff -u php-src/ext/phar/phar_object.c:1.266.2.25 
php-src/ext/phar/phar_object.c:1.266.2.26
--- php-src/ext/phar/phar_object.c:1.266.2.25   Fri Jun 20 09:17:53 2008
+++ php-src/ext/phar/phar_object.c  Sat Jun 21 06:53:10 2008
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: phar_object.c,v 1.266.2.25 2008/06/20 09:17:53 johannes Exp $ */
+/* $Id: phar_object.c,v 1.266.2.26 2008/06/21 06:53:10 cellog Exp $ */
 
 #include phar_internal.h
 #include func_interceptors.h
@@ -1365,20 +1365,22 @@
return; \
}
 
-static int phar_build(zend_object_iterator *iter, void *puser TSRMLS_DC) /* 
{{{ */
-{
-   zval **value;
-   zend_uchar key_type;
-   zend_bool is_splfileinfo = 0, close_fp = 1;
-   ulong int_key;
-   struct _t {
+struct _phar_t {
phar_archive_object *p;
zend_class_entry *c;
char *b;
uint l;
zval *ret;
int count;
-   } *p_obj = (struct _t*) puser;
+   php_stream *fp;
+   };
+static int phar_build(zend_object_iterator *iter, void *puser TSRMLS_DC) /* 
{{{ */
+{
+   zval **value;
+   zend_uchar key_type;
+   zend_bool is_splfileinfo = 0, close_fp = 1;
+   ulong int_key;
+   struct _phar_t *p_obj = (struct _phar_t*) puser;
uint str_key_len, base_len = p_obj-l, fname_len;
phar_entry_data *data;
php_stream *fp;
@@ -1605,7 +1607,13 @@
if (error) {
efree(error);
}
-   contents_len = php_stream_copy_to_stream(fp, data-fp, 
PHP_STREAM_COPY_ALL);
+   /* convert to PHAR_UFP */
+   php_stream_close(data-internal_file-fp);
+   data-internal_file-fp_type = PHAR_UFP;
+   data-internal_file-offset_abs = data-internal_file-offset = 
php_stream_tell(p_obj-fp);
+   contents_len = php_stream_copy_to_stream(fp, p_obj-fp, 
PHP_STREAM_COPY_ALL);
+   data-internal_file-uncompressed_filesize = 
data-internal_file-compressed_filesize =
+   php_stream_tell(p_obj-fp) - 
data-internal_file-offset;
}
if (close_fp) {
php_stream_close(fp);
@@ -1622,15 +1630,6 @@
 
data-internal_file-compressed_filesize = 
data-internal_file-uncompressed_filesize = contents_len;
phar_entry_delref(data TSRMLS_CC);
-   if (++p_obj-count  p_obj-count % 900) {
-   /* every 900 files, flush so we remove open temp file handles, 
fixes Bug #45218 */
-   phar_flush(p_obj-p-arc.archive, 0, 0, 0, error TSRMLS_CC);
-   if (error) {
-   zend_throw_exception_ex(phar_ce_PharException, 0 
TSRMLS_CC, error);
-   efree(error);
-   return ZEND_HASH_APPLY_STOP;
-   }
-   }
return ZEND_HASH_APPLY_KEEP;
 }
 /* }}} */
@@ -1647,14 +1646,7 @@
int dir_len, regex_len = 0;
zend_bool apply_reg = 0;
zval arg, arg2, *iter, *iteriter, *regexiter = NULL;
-   struct {
-   phar_archive_object *p;
-   zend_class_entry *c;
-   char *b;
-   uint l;
-   zval *ret;
-   int count;
-   } pass;
+   struct _phar_t pass;
 
PHAR_ARCHIVE_OBJECT();
 
@@ -1731,12 +1723,14 @@
pass.l = dir_len;
pass.count = 0;
pass.ret = return_value;
+   pass.fp = php_stream_fopen_tmpfile();
 
if (SUCCESS == spl_iterator_apply((apply_reg ? regexiter : iteriter), 
(spl_iterator_apply_func_t) phar_build, (void *) pass TSRMLS_CC)) {
zval_ptr_dtor(iteriter);
if (apply_reg) {
zval_ptr_dtor(regexiter);
}
+   phar_obj-arc.archive-ufp = pass.fp;
phar_flush(phar_obj-arc.archive, 0, 0, 0, error TSRMLS_CC);
if (error) {
zend_throw_exception_ex(phar_ce_PharException, 0 
TSRMLS_CC, error);
@@ -1761,14 +1755,7 @@
char *error;
uint base_len = 0;
char *base = NULL;
-   struct {
-   phar_archive_object *p;
-   zend_class_entry *c;
-   char *b;
-   uint l;
-   zval *ret;
-   int count;
-   } pass;
+   struct _phar_t pass;
PHAR_ARCHIVE_OBJECT();
 
if (PHAR_G(readonly)  

[PHP-CVS] cvs: php-src(PHP_5_3) /ext/phar phar.phar phar_object.c /ext/phar/tests bug45218_SLOWTEST.phpt

2008-06-10 Thread Greg Beaver
cellog  Tue Jun 10 19:20:33 2008 UTC

  Added files: (Branch: PHP_5_3)
/php-src/ext/phar/tests bug45218_SLOWTEST.phpt 

  Modified files:  
/php-src/ext/phar   phar.phar phar_object.c 
  Log:
  fix PHP Bug #45218: PHAR archive built from directory limited by max open 
file handles
  
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar.phar?r1=1.7.2.9r2=1.7.2.10diff_format=u
Index: php-src/ext/phar/phar.phar
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar_object.c?r1=1.266.2.16r2=1.266.2.17diff_format=u
Index: php-src/ext/phar/phar_object.c
diff -u php-src/ext/phar/phar_object.c:1.266.2.16 
php-src/ext/phar/phar_object.c:1.266.2.17
--- php-src/ext/phar/phar_object.c:1.266.2.16   Mon Jun  2 15:49:03 2008
+++ php-src/ext/phar/phar_object.c  Tue Jun 10 19:20:33 2008
@@ -17,7 +17,7 @@
   +--+
 */
 
-/* $Id: phar_object.c,v 1.266.2.16 2008/06/02 15:49:03 helly Exp $ */
+/* $Id: phar_object.c,v 1.266.2.17 2008/06/10 19:20:33 cellog Exp $ */
 
 #include phar_internal.h
 #include func_interceptors.h
@@ -1347,12 +1347,13 @@
char *b;
uint l;
zval *ret;
+   int count;
} *p_obj = (struct _t*) puser;
uint str_key_len, base_len = p_obj-l, fname_len;
phar_entry_data *data;
php_stream *fp;
long contents_len;
-   char *fname, *error, *base = p_obj-b, *opened, *save = NULL, *temp = 
NULL;
+   char *fname, *error = NULL, *base = p_obj-b, *opened, *save = NULL, 
*temp = NULL;
phar_zstr key;
char *str_key;
zend_class_entry *ce = p_obj-c;
@@ -1591,6 +1592,15 @@
 
data-internal_file-compressed_filesize = 
data-internal_file-uncompressed_filesize = contents_len;
phar_entry_delref(data TSRMLS_CC);
+   if (++p_obj-count  p_obj-count % 900) {
+   /* every 900 files, flush so we remove open temp file handles, 
fixes Bug #45218 */
+   phar_flush(p_obj-p-arc.archive, 0, 0, 0, error TSRMLS_CC);
+   if (error) {
+   zend_throw_exception_ex(phar_ce_PharException, 0 
TSRMLS_CC, error);
+   efree(error);
+   return ZEND_HASH_APPLY_STOP;
+   }
+   }
return ZEND_HASH_APPLY_KEEP;
 }
 /* }}} */
@@ -1613,6 +1623,7 @@
char *b;
uint l;
zval *ret;
+   int count;
} pass;
 
PHAR_ARCHIVE_OBJECT();
@@ -1688,6 +1699,7 @@
pass.p = phar_obj;
pass.b = dir;
pass.l = dir_len;
+   pass.count = 0;
pass.ret = return_value;
 
if (SUCCESS == spl_iterator_apply((apply_reg ? regexiter : iteriter), 
(spl_iterator_apply_func_t) phar_build, (void *) pass TSRMLS_CC)) {
@@ -1725,6 +1737,7 @@
char *b;
uint l;
zval *ret;
+   int count;
} pass;
PHAR_ARCHIVE_OBJECT();
 
@@ -1745,6 +1758,7 @@
pass.b = base;
pass.l = base_len;
pass.ret = return_value;
+   pass.count = 0;
 
if (SUCCESS == spl_iterator_apply(obj, (spl_iterator_apply_func_t) 
phar_build, (void *) pass TSRMLS_CC)) {
phar_flush(phar_obj-arc.archive, 0, 0, 0, error TSRMLS_CC);

http://cvs.php.net/viewvc.cgi/php-src/ext/phar/tests/bug45218_SLOWTEST.phpt?view=markuprev=1.1
Index: php-src/ext/phar/tests/bug45218_SLOWTEST.phpt
+++ php-src/ext/phar/tests/bug45218_SLOWTEST.phpt



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php