@@ -1327,9 +1327,16 @@ PHPAPI const ps_serializer *_php_find_ps_serializer(char *name TSRMLS_DC) /* {{{
1327
1327
}
1328
1328
/* }}} */
1329
1329
1330
- #define PPID2SID \
1331
- convert_to_string((*ppid)); \
1332
- PS(id) = estrndup(Z_STRVAL_PP(ppid), Z_STRLEN_PP(ppid))
1330
+ static void ppid2sid (zval * * ppid TSRMLS_DC ) {
1331
+ if (Z_TYPE_PP (ppid ) != IS_STRING ) {
1332
+ PS (id ) = NULL ;
1333
+ PS (send_cookie ) = 1 ;
1334
+ } else {
1335
+ convert_to_string ((* ppid ));
1336
+ PS (id ) = estrndup (Z_STRVAL_PP (ppid ), Z_STRLEN_PP (ppid ));
1337
+ PS (send_cookie ) = 0 ;
1338
+ }
1339
+ }
1333
1340
1334
1341
static void php_session_reset_id (TSRMLS_D ) /* {{{ */
1335
1342
{
@@ -1418,9 +1425,8 @@ PHPAPI void php_session_start(TSRMLS_D) /* {{{ */
1418
1425
Z_TYPE_PP (data ) == IS_ARRAY &&
1419
1426
zend_hash_find (Z_ARRVAL_PP (data ), PS (session_name ), lensess + 1 , (void * * ) & ppid ) == SUCCESS
1420
1427
) {
1421
- PPID2SID ;
1428
+ ppid2sid ( ppid TSRMLS_CC ) ;
1422
1429
PS (apply_trans_sid ) = 0 ;
1423
- PS (send_cookie ) = 0 ;
1424
1430
PS (define_sid ) = 0 ;
1425
1431
}
1426
1432
@@ -1429,17 +1435,15 @@ PHPAPI void php_session_start(TSRMLS_D) /* {{{ */
1429
1435
Z_TYPE_PP (data ) == IS_ARRAY &&
1430
1436
zend_hash_find (Z_ARRVAL_PP (data ), PS (session_name ), lensess + 1 , (void * * ) & ppid ) == SUCCESS
1431
1437
) {
1432
- PPID2SID ;
1433
- PS (send_cookie ) = 0 ;
1438
+ ppid2sid (ppid TSRMLS_CC );
1434
1439
}
1435
1440
1436
1441
if (!PS (use_only_cookies ) && !PS (id ) &&
1437
1442
zend_hash_find (& EG (symbol_table ), "_POST" , sizeof ("_POST" ), (void * * ) & data ) == SUCCESS &&
1438
1443
Z_TYPE_PP (data ) == IS_ARRAY &&
1439
1444
zend_hash_find (Z_ARRVAL_PP (data ), PS (session_name ), lensess + 1 , (void * * ) & ppid ) == SUCCESS
1440
1445
) {
1441
- PPID2SID ;
1442
- PS (send_cookie ) = 0 ;
1446
+ ppid2sid (ppid TSRMLS_CC );
1443
1447
}
1444
1448
}
1445
1449
0 commit comments