aboutsummaryrefslogtreecommitdiff
path: root/liolib.c
diff options
context:
space:
mode:
Diffstat (limited to 'liolib.c')
-rw-r--r--liolib.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/liolib.c b/liolib.c
index fa6a0939..1484676d 100644
--- a/liolib.c
+++ b/liolib.c
@@ -504,17 +504,17 @@ static int test_eof (lua_State *L, FILE *f) {
504 504
505static int read_line (lua_State *L, FILE *f, int chop) { 505static int read_line (lua_State *L, FILE *f, int chop) {
506 luaL_Buffer b; 506 luaL_Buffer b;
507 int c = '\0'; 507 int c;
508 luaL_buffinit(L, &b); 508 luaL_buffinit(L, &b);
509 while (c != EOF && c != '\n') { /* repeat until end of line */ 509 do { /* may need to read several chunks to get whole line */
510 char *buff = luaL_prepbuffer(&b); /* preallocate buffer */ 510 char *buff = luaL_prepbuffer(&b); /* preallocate buffer space */
511 int i = 0; 511 int i = 0;
512 l_lockfile(f); /* no memory errors can happen inside the lock */ 512 l_lockfile(f); /* no memory errors can happen inside the lock */
513 while (i < LUAL_BUFFERSIZE && (c = l_getc(f)) != EOF && c != '\n') 513 while (i < LUAL_BUFFERSIZE && (c = l_getc(f)) != EOF && c != '\n')
514 buff[i++] = c; 514 buff[i++] = c; /* read up to end of line or buffer limit */
515 l_unlockfile(f); 515 l_unlockfile(f);
516 luaL_addsize(&b, i); 516 luaL_addsize(&b, i);
517 } 517 } while (c != EOF && c != '\n'); /* repeat until end of line */
518 if (!chop && c == '\n') /* want a newline and have one? */ 518 if (!chop && c == '\n') /* want a newline and have one? */
519 luaL_addchar(&b, c); /* add ending newline to result */ 519 luaL_addchar(&b, c); /* add ending newline to result */
520 luaL_pushresult(&b); /* close buffer */ 520 luaL_pushresult(&b); /* close buffer */