@@ -595,7 +595,9 @@ void phar_metadata_tracker_try_ensure_has_serialized_data(phar_metadata_tracker
595
595
/* }}} */
596
596
597
597
/**
598
- * Parse out metadata when phar_metadata_tracker_has_data is true
598
+ * Parse out metadata when phar_metadata_tracker_has_data is true.
599
+ *
600
+ * Precondition: phar_metadata_tracker_has_data is true
599
601
*/
600
602
int phar_metadata_tracker_unserialize_or_copy (phar_metadata_tracker * tracker , zval * metadata , int persistent , HashTable * unserialize_options , const char * method_name ) /* {{{ */
601
603
{
@@ -613,20 +615,7 @@ int phar_metadata_tracker_unserialize_or_copy(phar_metadata_tracker *tracker, zv
613
615
const char * start ;
614
616
/* Assert it should not be possible to create raw data in a persistent phar (i.e. from cache_list) */
615
617
616
- if (has_unserialize_options && tracker -> str == NULL ) {
617
- /* If this specifies any unserialization options, assume that this will need to serialize the data to unserialize it later */
618
- smart_str main_metadata_str = {0 };
619
- php_serialize_data_t metadata_hash ;
620
- ZEND_ASSERT (!persistent );
621
- PHP_VAR_SERIALIZE_INIT (metadata_hash );
622
- php_var_serialize (& main_metadata_str , & tracker -> val , & metadata_hash );
623
- PHP_VAR_SERIALIZE_DESTROY (metadata_hash );
624
- if (EG (exception )) {
625
- return FAILURE ;
626
- }
627
- tracker -> str = main_metadata_str .s ;
628
- }
629
- /* precondition: This has data */
618
+ /* Precondition: This has serialized data, either from setMetadata or the phar file. */
630
619
ZEND_ASSERT (tracker -> str != NULL );
631
620
ZVAL_NULL (metadata );
632
621
start = ZSTR_VAL (tracker -> str );
0 commit comments