diff options
Diffstat (limited to 'Zend/zend_highlight.c')
-rw-r--r-- | Zend/zend_highlight.c | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/Zend/zend_highlight.c b/Zend/zend_highlight.c index c789cb719a..26c34686a6 100644 --- a/Zend/zend_highlight.c +++ b/Zend/zend_highlight.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ - | Copyright (c) 1998-2013 Zend Technologies Ltd. (http://www.zend.com) | + | Copyright (c) 1998-2014 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | @@ -57,7 +57,7 @@ ZEND_API void zend_html_putc(char c) ZEND_API void zend_html_puts(const char *s, uint len TSRMLS_DC) { const unsigned char *ptr = (const unsigned char*)s, *end = ptr + len; - unsigned char *filtered; + unsigned char *filtered = NULL; size_t filtered_len; if (LANG_SCNG(output_filter)) { @@ -92,7 +92,7 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini zend_printf("<code>"); zend_printf("<span style=\"color: %s\">\n", last_color); /* highlight stuff coming back from zendlex() */ - token.type = 0; + ZVAL_UNDEF(&token); while ((token_type=lex_scan(&token TSRMLS_CC))) { switch (token_type) { case T_INLINE_HTML: @@ -104,9 +104,15 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini break; case T_OPEN_TAG: case T_OPEN_TAG_WITH_ECHO: - next_color = syntax_highlighter_ini->highlight_default; - break; case T_CLOSE_TAG: + case T_LINE: + case T_FILE: + case T_DIR: + case T_TRAIT_C: + case T_METHOD_C: + case T_FUNC_C: + case T_NS_C: + case T_CLASS_C: next_color = syntax_highlighter_ini->highlight_default; break; case '"': @@ -116,11 +122,11 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini break; case T_WHITESPACE: zend_html_puts((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng) TSRMLS_CC); /* no color needed */ - token.type = 0; + ZVAL_UNDEF(&token); continue; break; default: - if (token.type == 0) { + if (Z_TYPE(token) == IS_UNDEF) { next_color = syntax_highlighter_ini->highlight_keyword; } else { next_color = syntax_highlighter_ini->highlight_default; @@ -140,7 +146,7 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini zend_html_puts((char*)LANG_SCNG(yy_text), LANG_SCNG(yy_leng) TSRMLS_CC); - if (token.type == IS_STRING) { + if (Z_TYPE(token) == IS_STRING) { switch (token_type) { case T_OPEN_TAG: case T_OPEN_TAG_WITH_ECHO: @@ -150,11 +156,11 @@ ZEND_API void zend_highlight(zend_syntax_highlighter_ini *syntax_highlighter_ini case T_DOC_COMMENT: break; default: - efree(token.value.str.val); + zend_string_release(Z_STR(token)); break; } } - token.type = 0; + ZVAL_UNDEF(&token); } if (last_color != syntax_highlighter_ini->highlight_html) { @@ -170,7 +176,7 @@ ZEND_API void zend_strip(TSRMLS_D) int token_type; int prev_space = 0; - token.type = 0; + ZVAL_UNDEF(&token); while ((token_type=lex_scan(&token TSRMLS_CC))) { switch (token_type) { case T_WHITESPACE: @@ -181,7 +187,7 @@ ZEND_API void zend_strip(TSRMLS_D) /* lack of break; is intentional */ case T_COMMENT: case T_DOC_COMMENT: - token.type = 0; + ZVAL_UNDEF(&token); continue; case T_END_HEREDOC: @@ -192,7 +198,7 @@ ZEND_API void zend_strip(TSRMLS_D) } zend_write("\n", sizeof("\n") - 1); prev_space = 1; - token.type = 0; + ZVAL_UNDEF(&token); continue; default: @@ -200,7 +206,7 @@ ZEND_API void zend_strip(TSRMLS_D) break; } - if (token.type == IS_STRING) { + if (Z_TYPE(token) == IS_STRING) { switch (token_type) { case T_OPEN_TAG: case T_OPEN_TAG_WITH_ECHO: @@ -211,11 +217,12 @@ ZEND_API void zend_strip(TSRMLS_D) break; default: - efree(token.value.str.val); + zend_string_release(Z_STR(token)); break; } } - prev_space = token.type = 0; + prev_space = 0; + ZVAL_UNDEF(&token); } } |