summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2008-03-22 18:53:08 +0000
committerMarcus Boerger <helly@php.net>2008-03-22 18:53:08 +0000
commit978886a3a8b99d654a92c79cfc4e9d9fb7d8fb42 (patch)
treec92c4b732225a7e6b6b8bce53330e2241084d463 /Zend
parent708cbe15d16056917383a1a78f293de08a37b898 (diff)
downloadphp-git-978886a3a8b99d654a92c79cfc4e9d9fb7d8fb42.tar.gz
- Make multibyte a tad bit less crappy
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_language_scanner.l27
1 files 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;
}