Skip to content

Commit 9798dc2

Browse files
committed
ext/imap: Use propery API instead of php_imap_hash_add_object()
It was only ever used to update an object property table and never an associative array.
1 parent 5d03048 commit 9798dc2

File tree

1 file changed

+126
-63
lines changed

1 file changed

+126
-63
lines changed

ext/imap/php_imap.c

Lines changed: 126 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -245,20 +245,6 @@ static void imap_object_destroy(zend_object *zobj) {
245245
RETURN_FALSE; \
246246
} \
247247

248-
/* {{{ php_imap_hash_add_object */
249-
static zval *php_imap_hash_add_object(zval *arg, char *key, zval *tmp)
250-
{
251-
HashTable *symtable;
252-
253-
if (Z_TYPE_P(arg) == IS_OBJECT) {
254-
symtable = Z_OBJPROP_P(arg);
255-
} else {
256-
symtable = Z_ARRVAL_P(arg);
257-
}
258-
return zend_hash_str_update(symtable, key, strlen(key), tmp);
259-
}
260-
/* }}} */
261-
262248
/* {{{ mail_newfolderobjectlist
263249
*
264250
* Mail instantiate FOBJECTLIST
@@ -2959,7 +2945,13 @@ static void php_imap_populate_body_struct_object(zval *z_object, const BODY *bod
29592945
);
29602946
zend_hash_next_index_insert_new(Z_ARR(z_disposition_parameter_list), &z_disposition_parameter);
29612947
} while ((disposition_parameter = disposition_parameter->next));
2962-
php_imap_hash_add_object(z_object, "dparameters", &z_disposition_parameter_list);
2948+
2949+
zend_update_property(
2950+
Z_OBJCE_P(z_object), Z_OBJ_P(z_object),
2951+
"dparameters", strlen("dparameters"),
2952+
&z_disposition_parameter_list
2953+
);
2954+
zval_ptr_dtor(&z_disposition_parameter_list);
29632955
} else {
29642956
zend_update_property_long(
29652957
Z_OBJCE_P(z_object), Z_OBJ_P(z_object),
@@ -3004,7 +2996,13 @@ static void php_imap_populate_body_struct_object(zval *z_object, const BODY *bod
30042996
0
30052997
);
30062998
}
3007-
php_imap_hash_add_object(z_object, "parameters", &z_body_parameter_list);
2999+
3000+
zend_update_property(
3001+
Z_OBJCE_P(z_object), Z_OBJ_P(z_object),
3002+
"parameters", strlen("parameters"),
3003+
&z_body_parameter_list
3004+
);
3005+
zval_ptr_dtor(&z_body_parameter_list);
30083006
}
30093007

30103008
/* {{{ Read the structure of a specified body section of a specific message */
@@ -4243,9 +4241,6 @@ static zend_string* _php_imap_parse_address (ADDRESS *address_list, zval *paddre
42434241
/* {{{ _php_make_header_object */
42444242
static void _php_make_header_object(zval *myzvalue, ENVELOPE *en)
42454243
{
4246-
zval paddress;
4247-
zend_string *fulladdress=NULL;
4248-
42494244
object_init(myzvalue);
42504245

42514246
if (en->remail) {
@@ -4316,101 +4311,157 @@ static void _php_make_header_object(zval *myzvalue, ENVELOPE *en)
43164311
}
43174312

43184313
if (en->to) {
4319-
array_init(&paddress);
4320-
fulladdress = _php_imap_parse_address(en->to, &paddress);
4321-
if (fulladdress) {
4314+
zval to_address_parts;
4315+
zend_string *to_full_address = NULL;
4316+
4317+
array_init(&to_address_parts);
4318+
to_full_address = _php_imap_parse_address(en->to, &to_address_parts);
4319+
if (to_full_address) {
43224320
zend_update_property_str(
43234321
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
43244322
"toaddress", strlen("toaddress"),
4325-
fulladdress
4323+
to_full_address
43264324
);
4327-
zend_string_release(fulladdress);
4325+
zend_string_release(to_full_address);
43284326
}
4329-
php_imap_hash_add_object(myzvalue, "to", &paddress);
4327+
zend_update_property(
4328+
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
4329+
"to", strlen("to"),
4330+
&to_address_parts
4331+
);
4332+
zval_ptr_dtor(&to_address_parts);
43304333
}
43314334

43324335
if (en->from) {
4333-
array_init(&paddress);
4334-
fulladdress = _php_imap_parse_address(en->from, &paddress);
4335-
if (fulladdress) {
4336+
zval from_address_parts;
4337+
zend_string *from_full_address = NULL;
4338+
4339+
array_init(&from_address_parts);
4340+
from_full_address = _php_imap_parse_address(en->from, &from_address_parts);
4341+
if (from_full_address) {
43364342
zend_update_property_str(
43374343
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
43384344
"fromaddress", strlen("fromaddress"),
4339-
fulladdress
4345+
from_full_address
43404346
);
4341-
zend_string_release(fulladdress);
4347+
zend_string_release(from_full_address);
43424348
}
4343-
php_imap_hash_add_object(myzvalue, "from", &paddress);
4349+
zend_update_property(
4350+
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
4351+
"from", strlen("from"),
4352+
&from_address_parts
4353+
);
4354+
zval_ptr_dtor(&from_address_parts);
43444355
}
43454356

43464357
if (en->cc) {
4347-
array_init(&paddress);
4348-
fulladdress = _php_imap_parse_address(en->cc, &paddress);
4349-
if (fulladdress) {
4358+
zval cc_address_parts;
4359+
zend_string *cc_full_address = NULL;
4360+
4361+
array_init(&cc_address_parts);
4362+
cc_full_address = _php_imap_parse_address(en->cc, &cc_address_parts);
4363+
if (cc_full_address) {
43504364
zend_update_property_str(
43514365
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
43524366
"ccaddress", strlen("ccaddress"),
4353-
fulladdress
4367+
cc_full_address
43544368
);
4355-
zend_string_release(fulladdress);
4369+
zend_string_release(cc_full_address);
43564370
}
4357-
php_imap_hash_add_object(myzvalue, "cc", &paddress);
4371+
zend_update_property(
4372+
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
4373+
"cc", strlen("cc"),
4374+
&cc_address_parts
4375+
);
4376+
zval_ptr_dtor(&cc_address_parts);
43584377
}
43594378

43604379
if (en->bcc) {
4361-
array_init(&paddress);
4362-
fulladdress = _php_imap_parse_address(en->bcc, &paddress);
4363-
if (fulladdress) {
4380+
zval bcc_address_parts;
4381+
zend_string *bcc_full_address = NULL;
4382+
4383+
array_init(&bcc_address_parts);
4384+
bcc_full_address = _php_imap_parse_address(en->bcc, &bcc_address_parts);
4385+
if (bcc_full_address) {
43644386
zend_update_property_str(
43654387
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
43664388
"bccaddress", strlen("bccaddress"),
4367-
fulladdress
4389+
bcc_full_address
43684390
);
4369-
zend_string_release(fulladdress);
4391+
zend_string_release(bcc_full_address);
43704392
}
4371-
php_imap_hash_add_object(myzvalue, "bcc", &paddress);
4393+
zend_update_property(
4394+
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
4395+
"bcc", strlen("bcc"),
4396+
&bcc_address_parts
4397+
);
4398+
zval_ptr_dtor(&bcc_address_parts);
43724399
}
43734400

43744401
if (en->reply_to) {
4375-
array_init(&paddress);
4376-
fulladdress = _php_imap_parse_address(en->reply_to, &paddress);
4377-
if (fulladdress) {
4402+
zval reply_to_address_parts;
4403+
zend_string *reply_to_full_address = NULL;
4404+
4405+
array_init(&reply_to_address_parts);
4406+
reply_to_full_address = _php_imap_parse_address(en->reply_to, &reply_to_address_parts);
4407+
if (reply_to_full_address) {
43784408
zend_update_property_str(
43794409
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
43804410
"reply_toaddress", strlen("reply_toaddress"),
4381-
fulladdress
4411+
reply_to_full_address
43824412
);
4383-
zend_string_release(fulladdress);
4413+
zend_string_release(reply_to_full_address);
43844414
}
4385-
php_imap_hash_add_object(myzvalue, "reply_to", &paddress);
4415+
zend_update_property(
4416+
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
4417+
"reply_to", strlen("reply_to"),
4418+
&reply_to_address_parts
4419+
);
4420+
zval_ptr_dtor(&reply_to_address_parts);
43864421
}
43874422

43884423
if (en->sender) {
4389-
array_init(&paddress);
4390-
fulladdress = _php_imap_parse_address(en->sender, &paddress);
4391-
if (fulladdress) {
4424+
zval sender_address_parts;
4425+
zend_string *sender_full_address = NULL;
4426+
4427+
array_init(&sender_address_parts);
4428+
sender_full_address = _php_imap_parse_address(en->sender, &sender_address_parts);
4429+
if (sender_full_address) {
43924430
zend_update_property_str(
43934431
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
43944432
"senderaddress", strlen("senderaddress"),
4395-
fulladdress
4433+
sender_full_address
43964434
);
4397-
zend_string_release(fulladdress);
4435+
zend_string_release(sender_full_address);
43984436
}
4399-
php_imap_hash_add_object(myzvalue, "sender", &paddress);
4437+
zend_update_property(
4438+
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
4439+
"sender", strlen("sender"),
4440+
&sender_address_parts
4441+
);
4442+
zval_ptr_dtor(&sender_address_parts);
44004443
}
44014444

44024445
if (en->return_path) {
4403-
array_init(&paddress);
4404-
fulladdress = _php_imap_parse_address(en->return_path, &paddress);
4405-
if (fulladdress) {
4446+
zval return_path_address_parts;
4447+
zend_string *return_path_full_address = NULL;
4448+
4449+
array_init(&return_path_address_parts);
4450+
return_path_full_address = _php_imap_parse_address(en->return_path, &return_path_address_parts);
4451+
if (return_path_full_address) {
44064452
zend_update_property_str(
44074453
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
44084454
"return_pathaddress", strlen("return_pathaddress"),
4409-
fulladdress
4455+
return_path_full_address
44104456
);
4411-
zend_string_release(fulladdress);
4457+
zend_string_release(return_path_full_address);
44124458
}
4413-
php_imap_hash_add_object(myzvalue, "return_path", &paddress);
4459+
zend_update_property(
4460+
Z_OBJCE_P(myzvalue), Z_OBJ_P(myzvalue),
4461+
"return_path", strlen("return_path"),
4462+
&return_path_address_parts
4463+
);
4464+
zval_ptr_dtor(&return_path_address_parts);
44144465
// From rebase might need?
44154466
//add_assoc_object(myzvalue, "return_path", &paddress);
44164467
}
@@ -4433,7 +4484,13 @@ void _php_imap_add_body(zval *arg, const BODY *body)
44334484
_php_imap_add_body(&z_content_part, &content_part->body);
44344485
zend_hash_next_index_insert_new(Z_ARR(z_content_part_list), &z_content_part);
44354486
}
4436-
php_imap_hash_add_object(arg, "parts", &z_content_part_list);
4487+
4488+
zend_update_property(
4489+
Z_OBJCE_P(arg), Z_OBJ_P(arg),
4490+
"parts", strlen("parts"),
4491+
&z_content_part_list
4492+
);
4493+
zval_ptr_dtor(&z_content_part_list);
44374494
}
44384495

44394496
/* encapsulated message ? */
@@ -4445,7 +4502,13 @@ void _php_imap_add_body(zval *arg, const BODY *body)
44454502
object_init(&message);
44464503
_php_imap_add_body(&message, message_body);
44474504
zend_hash_next_index_insert_new(Z_ARR(message_list), &message);
4448-
php_imap_hash_add_object(arg, "parts", &message_list);
4505+
4506+
zend_update_property(
4507+
Z_OBJCE_P(arg), Z_OBJ_P(arg),
4508+
"parts", strlen("parts"),
4509+
&message_list
4510+
);
4511+
zval_ptr_dtor(&message_list);
44494512
}
44504513
}
44514514
/* }}} */

0 commit comments

Comments
 (0)