Skip to content

Commit 26a3d5e

Browse files
committed
New method simdjson_cleanup
This method will cleanup allocated buffers by simdjson parser
1 parent 9a27456 commit 26a3d5e

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

php_simdjson.cpp

+17
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ SIMDJSON_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(simdjson_key_count_arginfo, 0,
8484
ZEND_ARG_TYPE_INFO(0, throw_if_uncountable, _IS_BOOL, 0)
8585
ZEND_END_ARG_INFO()
8686

87+
SIMDJSON_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(simdjson_cleanup_arginfo, 0, 0, _IS_BOOL, 0)
88+
ZEND_END_ARG_INFO()
89+
8790
#define SIMDJSON_G(v) ZEND_MODULE_GLOBALS_ACCESSOR(simdjson, v)
8891
static simdjson_php_parser *simdjson_get_parser() {
8992
simdjson_php_parser *parser = SIMDJSON_G(parser);
@@ -221,6 +224,19 @@ PHP_FUNCTION (simdjson_key_exists) {
221224
}
222225
}
223226

227+
PHP_FUNCTION (simdjson_cleanup) {
228+
if (zend_parse_parameters_none() == FAILURE) {
229+
RETURN_THROWS();
230+
}
231+
232+
simdjson_php_parser *parser = SIMDJSON_G(parser);
233+
if (EXPECTED(parser != NULL)) {
234+
php_simdjson_free_parser(parser);
235+
SIMDJSON_G(parser) = NULL;
236+
}
237+
RETURN_TRUE;
238+
}
239+
224240
/* {{{ simdjson_functions[]
225241
*/
226242
zend_function_entry simdjson_functions[] = {
@@ -229,6 +245,7 @@ zend_function_entry simdjson_functions[] = {
229245
PHP_FE(simdjson_key_value, simdjson_key_value_arginfo)
230246
PHP_FE(simdjson_key_exists, simdjson_key_exists_arginfo)
231247
PHP_FE(simdjson_key_count, simdjson_key_count_arginfo)
248+
PHP_FE(simdjson_cleanup, simdjson_cleanup_arginfo)
232249
{NULL, NULL, NULL}
233250
};
234251
/* }}} */

0 commit comments

Comments
 (0)