diff options
Diffstat (limited to 'ext/sablot/sablot.c')
| -rw-r--r-- | ext/sablot/sablot.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/ext/sablot/sablot.c b/ext/sablot/sablot.c index 0bde0bf6db..09848a13f9 100644 --- a/ext/sablot/sablot.c +++ b/ext/sablot/sablot.c @@ -370,6 +370,12 @@ PHP_FUNCTION(xslt_create) int ret; SABLOTLS_FETCH(); + if (SABLOTG(current_processor)) { + Z_TYPE_P(return_value) = IS_RESOURCE; + Z_LVAL_P(return_value) = SABLOTG(current_processor); + return; + } + ret = SablotCreateProcessor(&p); if (ret) { @@ -403,6 +409,7 @@ PHP_FUNCTION(xslt_create) ZEND_REGISTER_RESOURCE(return_value, handle, SABLOTG(le_sablot)); handle->index = Z_LVAL_P(return_value); + SABLOTG(current_processor) = Z_LVAL_P(return_value); } /* }}} */ @@ -1079,6 +1086,8 @@ static void _php_sablot_free_processor(php_sablot *handle) SablotUnregHandler(handle->p, HLR_SAX, NULL, NULL); SablotDestroyProcessor(handle->p); } + SABLOTG(current_processor) = 0; + FUNCH_FREE(handle->startDocHandler); FUNCH_FREE(handle->startElementHandler); FUNCH_FREE(handle->endElementHandler); |
