From 978886a3a8b99d654a92c79cfc4e9d9fb7d8fb42 Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Sat, 22 Mar 2008 18:53:08 +0000 Subject: [PATCH] - Make multibyte a tad bit less crappy --- Zend/zend_language_scanner.l | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 436e6e5566..a8ee9e796e 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -723,7 +723,7 @@ ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, si /* TODO: support widechars */ - for (n = 0; n < sizeof(buf) && (c = zend_stream_getc(yyin TSRMLS_CC)) != EOF && c != '\n'; ++n) { + for (n = 0; n < len && (c = zend_stream_getc(yyin TSRMLS_CC)) != EOF && c != '\n'; ++n) { buf[n] = (char)c; } if (c == '\n') { @@ -731,8 +731,8 @@ ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, si } SCNG(script_org_size) = n; - SCNG(script_org) = (char*)emalloc(SCNG(script_org_size)+1); - memcpy(SCNG(script_org)+SCNG(script_org_size)-n, buf, n); + SCNG(script_org) = (char*)emalloc(SCNG(script_org_size) + 1); + memcpy(SCNG(script_org), buf, n); return n; } @@ -749,29 +749,18 @@ ZEND_API int zend_multibyte_read_script(TSRMLS_D) SCNG(script_org) = NULL; SCNG(script_org_size) = 0; - for (;;) { - n = zend_stream_read(yyin, buf, sizeof(buf) TSRMLS_CC); - if (n <= 0) { - break; - } - + for (; (n = zend_stream_read(yyin, buf, sizeof(buf) TSRMLS_CC)) > 0; ) { SCNG(script_org_size) += n; - if (SCNG(script_org)) { - SCNG(script_org) = (char*)erealloc(SCNG(script_org), SCNG(script_org_size)+1); - } else { - SCNG(script_org) = (char*)emalloc(SCNG(script_org_size)+1); - } - memcpy(SCNG(script_org)+SCNG(script_org_size)-n, buf, n); + SCNG(script_org) = (char*)erealloc(SCNG(script_org), SCNG(script_org_size)); + memcpy(SCNG(script_org) + SCNG(script_org_size) - n, buf, n); } if (n < 0) { return -1; } - if (!SCNG(script_org)) { - SCNG(script_org) = emalloc(SCNG(script_org_size)+1); - } - *(SCNG(script_org)+SCNG(script_org_size)) = (char)NULL; + SCNG(script_org) = (char*)erealloc(SCNG(script_org), SCNG(script_org_size) + 1); + *(SCNG(script_org)+SCNG(script_org_size)) = '\0'; return 0; } -- 2.40.0