- php_pqtypes_object_t *obj = zend_object_store_get_object(object TSRMLS_CC);
- char *key_str = NULL;
- int key_len = 0;
- ulong index = 0;
-
- if (check_empty) {
- if (has_dimension(&obj->intern->types, member, &key_str, &key_len, &index TSRMLS_CC)) {
- zval **data;
-
- if (key_str && key_len) {
- if (SUCCESS == zend_hash_find(&obj->intern->types, key_str, key_len, (void *) &data)) {
- efree(key_str);
- return Z_TYPE_PP(data) != IS_NULL;
- }
- efree(key_str);
- key_str = NULL;
- } else {
- if (SUCCESS == zend_hash_index_find(&obj->intern->types, index, (void *) &data)) {
- return Z_TYPE_PP(data) != IS_NULL;
+ php_pqtypes_object_t *obj = PHP_PQ_OBJ(NULL, object);
+ zend_string *key = NULL;
+ zend_long index = 0;
+
+ if (has_dimension(&obj->intern->types, member, &key, &index)) {
+ if (check_empty) {
+ zval *data;
+
+ if (key) {
+ if ((data = zend_hash_find(&obj->intern->types, key))) {
+ zend_string_release(key);
+ return Z_TYPE_P(data) != IS_NULL;