| | 1479 | /* {{{ xc_gc_op_array_t */ |
| | 1480 | typedef struct { |
| | 1481 | zend_uint num_args; |
| | 1482 | zend_arg_info *arg_info; |
| | 1483 | } xc_gc_op_array_t; |
| | 1484 | /* }}} */ |
| | 1485 | void xc_gc_add_op_array(zend_op_array *op_array TSRMLS_DC) /* {{{ */ |
| | 1486 | { |
| | 1487 | xc_gc_op_array_t gc_op_array; |
| | 1488 | gc_op_array.num_args = op_array->num_args; |
| | 1489 | gc_op_array.arg_info = op_array->arg_info; |
| | 1490 | zend_hash_next_index_insert(&XG(gc_op_arrays), (void *) &gc_op_array, sizeof(gc_op_array), NULL); |
| | 1491 | } |
| | 1492 | /* }}} */ |
| | 1493 | static void xc_gc_op_array(void *pDest) /* {{{ */ |
| | 1494 | { |
| | 1495 | xc_gc_op_array_t *op_array = (xc_gc_op_array_t *) pDest; |
| | 1496 | zend_uint i; |
| | 1497 | if (op_array->arg_info) { |
| | 1498 | for (i = 0; i < op_array->num_args; i++) { |
| | 1499 | efree((char*)op_array->arg_info[i].name); |
| | 1500 | if (op_array->arg_info[i].class_name) { |
| | 1501 | efree((char*)op_array->arg_info[i].class_name); |
| | 1502 | } |
| | 1503 | } |
| | 1504 | efree(op_array->arg_info); |
| | 1505 | } |
| | 1506 | } |
| | 1507 | /* }}} */ |
| | 1508 | |