mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
@ - Add new ZEND_GET_LE macro for retrieving destructor
@ id's from remote extensions. (Jmoore, Zend Engine)
This commit is contained in:
parent
65d9584ac0
commit
c1164ad5bf
2 changed files with 25 additions and 0 deletions
|
@ -317,6 +317,25 @@ ZEND_API int zend_register_list_destructors_ex(rsrc_dtor_func_t ld, rsrc_dtor_fu
|
||||||
return list_destructors.nNextFreeElement-1;
|
return list_destructors.nNextFreeElement-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ZEND_API int zend_fetch_list_dtor_id(char *type_name)
|
||||||
|
{
|
||||||
|
zend_rsrc_list_dtors_entry *lde;
|
||||||
|
HashPosition pos;
|
||||||
|
|
||||||
|
zend_hash_internal_pointer_reset_ex(&list_destructors, &pos);
|
||||||
|
while(zend_hash_get_current_data_ex(&list_destructors, (void **)&lde, &pos) == SUCCESS) {
|
||||||
|
if(strcmp(type_name, lde->type_name) == 0)
|
||||||
|
{
|
||||||
|
#if 0
|
||||||
|
printf("Found resource id %d for resource type %s\n",(*lde).resource_id,type_name);
|
||||||
|
#endif
|
||||||
|
return lde->resource_id;
|
||||||
|
}
|
||||||
|
zend_hash_move_forward_ex(&list_destructors, &pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int zend_init_rsrc_list_dtors(void)
|
int zend_init_rsrc_list_dtors(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -82,6 +82,7 @@ ZEND_API int zend_register_resource(zval *rsrc_result, void *rsrc_pointer, int r
|
||||||
ZEND_API void *zend_fetch_resource(zval **passed_id, int default_id, char *resource_type_name, int *found_resource_type, int num_resource_types, ...);
|
ZEND_API void *zend_fetch_resource(zval **passed_id, int default_id, char *resource_type_name, int *found_resource_type, int num_resource_types, ...);
|
||||||
|
|
||||||
ZEND_API char *zend_rsrc_list_get_rsrc_type(int resource);
|
ZEND_API char *zend_rsrc_list_get_rsrc_type(int resource);
|
||||||
|
ZEND_API int zend_fetch_list_dtor_id(char *type_name);
|
||||||
|
|
||||||
extern ZEND_API int le_index_ptr; /* list entry type for index pointers */
|
extern ZEND_API int le_index_ptr; /* list entry type for index pointers */
|
||||||
|
|
||||||
|
@ -101,4 +102,9 @@ extern ZEND_API int le_index_ptr; /* list entry type for index pointers */
|
||||||
#define ZEND_REGISTER_RESOURCE(rsrc_result, rsrc_pointer, rsrc_type) \
|
#define ZEND_REGISTER_RESOURCE(rsrc_result, rsrc_pointer, rsrc_type) \
|
||||||
zend_register_resource(rsrc_result, rsrc_pointer, rsrc_type);
|
zend_register_resource(rsrc_result, rsrc_pointer, rsrc_type);
|
||||||
|
|
||||||
|
#define ZEND_GET_LE(le_id, le_type_name) \
|
||||||
|
if(le_id == 0) { \
|
||||||
|
le_id = zend_fetch_list_dtor_id(le_type_name); \
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue