summaryrefslogtreecommitdiffstats
path: root/source/compiler/dtio.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/compiler/dtio.c')
-rw-r--r--source/compiler/dtio.c37
1 files changed, 20 insertions, 17 deletions
diff --git a/source/compiler/dtio.c b/source/compiler/dtio.c
index 2b4e433..aa9cd7b 100644
--- a/source/compiler/dtio.c
+++ b/source/compiler/dtio.c
@@ -413,13 +413,21 @@ DtGetNextLine (
BOOLEAN LineNotAllBlanks = FALSE;
UINT32 State = DT_NORMAL_TEXT;
UINT32 CurrentLineOffset;
- UINT32 BeyondBufferCount;
UINT32 i;
char c;
- for (i = 0; i < ASL_LINE_BUFFER_SIZE;)
+ for (i = 0; ;)
{
+ /*
+ * If line is too long, expand the line buffers. Also increases
+ * Gbl_LineBufferSize.
+ */
+ if (i >= Gbl_LineBufferSize)
+ {
+ UtExpandLineBuffers ();
+ }
+
c = (char) getc (Handle);
if (c == EOF)
{
@@ -491,6 +499,11 @@ DtGetNextLine (
*/
if ((i != 0) && LineNotAllBlanks)
{
+ if ((i + 1) >= Gbl_LineBufferSize)
+ {
+ UtExpandLineBuffers ();
+ }
+
Gbl_CurrentLineBuffer[i+1] = 0; /* Terminate string */
return (CurrentLineOffset);
}
@@ -565,6 +578,11 @@ DtGetNextLine (
default: /* Not a comment */
i++; /* Save the preceeding slash */
+ if (i >= Gbl_LineBufferSize)
+ {
+ UtExpandLineBuffers ();
+ }
+
Gbl_CurrentLineBuffer[i] = c;
i++;
State = DT_NORMAL_TEXT;
@@ -668,21 +686,6 @@ DtGetNextLine (
return (ASL_EOF);
}
}
-
- /* Line is too long for internal buffer. Determine actual length */
-
- BeyondBufferCount = 1;
- c = (char) getc (Handle);
- while (c != '\n')
- {
- c = (char) getc (Handle);
- BeyondBufferCount++;
- }
-
- printf ("ERROR - At %u: Input line (%u bytes) is too long (max %u)\n",
- Gbl_CurrentLineNumber++, ASL_LINE_BUFFER_SIZE + BeyondBufferCount,
- ASL_LINE_BUFFER_SIZE);
- return (ASL_EOF);
}
OpenPOWER on IntegriCloud