@@ -2336,10 +2336,10 @@ PHP_METHOD(Phar, convertToExecutable)
2336
2336
size_t ext_len = 0 ;
2337
2337
uint32_t flags ;
2338
2338
zend_object * ret ;
2339
- /* a number that is not 0, 1 or 2 (Which is also Greg's birthday, so there) */
2340
- zend_long format = 9021976 , method = 9021976 ;
2339
+ zend_long format , method ;
2340
+ zend_bool format_is_null = 1 , method_is_null = 1 ;
2341
2341
2342
- if (zend_parse_parameters (ZEND_NUM_ARGS (), "|lls! " , & format , & method , & ext , & ext_len ) == FAILURE ) {
2342
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "|l!l!s! " , & format , & format_is_null , & method , & method_is_null , & ext , & ext_len ) == FAILURE ) {
2343
2343
RETURN_THROWS ();
2344
2344
}
2345
2345
@@ -2351,9 +2351,12 @@ PHP_METHOD(Phar, convertToExecutable)
2351
2351
RETURN_THROWS ();
2352
2352
}
2353
2353
2354
+ if (format_is_null ) {
2355
+ format = PHAR_FORMAT_SAME ;
2356
+ }
2354
2357
switch (format ) {
2355
- case 9021976 :
2356
- case PHAR_FORMAT_SAME : /* null is converted to 0 */
2358
+ case 9021976 : /* Retained for BC */
2359
+ case PHAR_FORMAT_SAME :
2357
2360
/* by default, use the existing format */
2358
2361
if (phar_obj -> archive -> is_tar ) {
2359
2362
format = PHAR_FORMAT_TAR ;
@@ -2373,8 +2376,11 @@ PHP_METHOD(Phar, convertToExecutable)
2373
2376
RETURN_THROWS ();
2374
2377
}
2375
2378
2376
- switch (method ) {
2377
- case 9021976 :
2379
+ if (method_is_null ) {
2380
+ flags = phar_obj -> archive -> flags & PHAR_FILE_COMPRESSION_MASK ;
2381
+ } else {
2382
+ switch (method ) {
2383
+ case 9021976 : /* Retained for BC */
2378
2384
flags = phar_obj -> archive -> flags & PHAR_FILE_COMPRESSION_MASK ;
2379
2385
break ;
2380
2386
case 0 :
@@ -2414,6 +2420,7 @@ PHP_METHOD(Phar, convertToExecutable)
2414
2420
zend_throw_exception_ex (spl_ce_BadMethodCallException , 0 ,
2415
2421
"Unknown compression specified, please pass one of Phar::GZ or Phar::BZ2" );
2416
2422
RETURN_THROWS ();
2423
+ }
2417
2424
}
2418
2425
2419
2426
is_data = phar_obj -> archive -> is_data ;
@@ -2440,18 +2447,21 @@ PHP_METHOD(Phar, convertToData)
2440
2447
size_t ext_len = 0 ;
2441
2448
uint32_t flags ;
2442
2449
zend_object * ret ;
2443
- /* a number that is not 0, 1 or 2 (Which is also Greg's birthday so there) */
2444
- zend_long format = 9021976 , method = 9021976 ;
2450
+ zend_long format , method ;
2451
+ zend_bool format_is_null = 1 , method_is_null = 1 ;
2445
2452
2446
- if (zend_parse_parameters (ZEND_NUM_ARGS (), "|lls! " , & format , & method , & ext , & ext_len ) == FAILURE ) {
2453
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "|l!l!s! " , & format , & format_is_null , & method , & method_is_null , & ext , & ext_len ) == FAILURE ) {
2447
2454
RETURN_THROWS ();
2448
2455
}
2449
2456
2450
2457
PHAR_ARCHIVE_OBJECT ();
2451
2458
2459
+ if (format_is_null ) {
2460
+ format = PHAR_FORMAT_SAME ;
2461
+ }
2452
2462
switch (format ) {
2453
- case 9021976 :
2454
- case PHAR_FORMAT_SAME : /* null is converted to 0 */
2463
+ case 9021976 : /* Retained for BC */
2464
+ case PHAR_FORMAT_SAME :
2455
2465
/* by default, use the existing format */
2456
2466
if (phar_obj -> archive -> is_tar ) {
2457
2467
format = PHAR_FORMAT_TAR ;
@@ -2476,8 +2486,11 @@ PHP_METHOD(Phar, convertToData)
2476
2486
RETURN_THROWS ();
2477
2487
}
2478
2488
2479
- switch (method ) {
2480
- case 9021976 :
2489
+ if (method_is_null ) {
2490
+ flags = phar_obj -> archive -> flags & PHAR_FILE_COMPRESSION_MASK ;
2491
+ } else {
2492
+ switch (method ) {
2493
+ case 9021976 : /* Retained for BC */
2481
2494
flags = phar_obj -> archive -> flags & PHAR_FILE_COMPRESSION_MASK ;
2482
2495
break ;
2483
2496
case 0 :
@@ -2517,6 +2530,7 @@ PHP_METHOD(Phar, convertToData)
2517
2530
zend_throw_exception_ex (spl_ce_BadMethodCallException , 0 ,
2518
2531
"Unknown compression specified, please pass one of Phar::GZ or Phar::BZ2" );
2519
2532
RETURN_THROWS ();
2533
+ }
2520
2534
}
2521
2535
2522
2536
is_data = phar_obj -> archive -> is_data ;
0 commit comments