summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoriyoshi Koizumi <moriyoshi@php.net>2004-03-04 22:50:55 +0000
committerMoriyoshi Koizumi <moriyoshi@php.net>2004-03-04 22:50:55 +0000
commitc0aabb79b23f0153ad87b232970601bf4daacefa (patch)
tree773e3108166a3b33241be964b18bc3c2ecb69478
parente5fb0e3fbde27d068553c6eb92f4326a2b84bed2 (diff)
downloadphp-git-c0aabb79b23f0153ad87b232970601bf4daacefa.tar.gz
- Fix memleak when scanner is called from within tokenizer extension.
# (only happens with zend multibyte feature enabled)
-rw-r--r--Zend/zend_language_scanner.l19
1 files changed, 8 insertions, 11 deletions
diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l
index 7d3467010e..2f51f756b0 100644
--- a/Zend/zend_language_scanner.l
+++ b/Zend/zend_language_scanner.l
@@ -195,6 +195,14 @@ ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC)
zend_restore_compiled_filename(lex_state->filename TSRMLS_CC);
#ifdef ZEND_MULTIBYTE
+ if (SCNG(script_org)) {
+ efree(SCNG(script_org));
+ SCNG(script_org) = NULL;
+ }
+ if (SCNG(script_filtered)) {
+ efree(SCNG(script_filtered));
+ SCNG(script_filtered) = NULL;
+ }
SCNG(script_org) = lex_state->script_org;
SCNG(script_org_size) = lex_state->script_org_size;
SCNG(script_filtered) = lex_state->script_filtered;
@@ -371,17 +379,6 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSR
zend_bailout();
}
compilation_successful=1;
-
-#ifdef ZEND_MULTIBYTE
- if (SCNG(script_org)) {
- efree(SCNG(script_org));
- SCNG(script_org) = NULL;
- }
- if (SCNG(script_filtered)) {
- efree(SCNG(script_filtered));
- SCNG(script_filtered) = NULL;
- }
-#endif /* ZEND_MULTIBYTE */
}
if (retval) {