aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2013-03-04 13:34:01 +0100
committerMike Pall <mike>2013-03-04 13:34:01 +0100
commitb2edd5cf2887b8132aeed4feb476ba49cdc3fe3b (patch)
tree0dca9bd0f7794416e256fe9e720f54969d660699
parentb65196b7fd3b1f67d54c7d48f522d7d682d0c545 (diff)
parentdac2825e9d626d910fc2657d1d9b68d225f18b57 (diff)
downloadluajit-b2edd5cf2887b8132aeed4feb476ba49cdc3fe3b.tar.gz
luajit-b2edd5cf2887b8132aeed4feb476ba49cdc3fe3b.tar.bz2
luajit-b2edd5cf2887b8132aeed4feb476ba49cdc3fe3b.zip
Merge branch 'master' into v2.1
Diffstat (limited to '')
-rw-r--r--src/lib_io.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/lib_io.c b/src/lib_io.c
index e9472ba5..5369d450 100644
--- a/src/lib_io.c
+++ b/src/lib_io.c
@@ -17,6 +17,7 @@
17#include "lualib.h" 17#include "lualib.h"
18 18
19#include "lj_obj.h" 19#include "lj_obj.h"
20#include "lj_gc.h"
20#include "lj_err.h" 21#include "lj_err.h"
21#include "lj_buf.h" 22#include "lj_buf.h"
22#include "lj_str.h" 23#include "lj_str.h"
@@ -153,6 +154,7 @@ static int io_file_readline(lua_State *L, FILE *fp, MSize chop)
153 if (n >= m - 64) m += m; 154 if (n >= m - 64) m += m;
154 } 155 }
155 setstrV(L, L->top++, lj_str_new(L, buf, (size_t)n)); 156 setstrV(L, L->top++, lj_str_new(L, buf, (size_t)n));
157 lj_gc_check(L);
156 return (int)ok; 158 return (int)ok;
157} 159}
158 160
@@ -164,6 +166,7 @@ static void io_file_readall(lua_State *L, FILE *fp)
164 n += (MSize)fread(buf+n, 1, m-n, fp); 166 n += (MSize)fread(buf+n, 1, m-n, fp);
165 if (n != m) { 167 if (n != m) {
166 setstrV(L, L->top++, lj_str_new(L, buf, (size_t)n)); 168 setstrV(L, L->top++, lj_str_new(L, buf, (size_t)n));
169 lj_gc_check(L);
167 return; 170 return;
168 } 171 }
169 } 172 }
@@ -175,6 +178,7 @@ static int io_file_readlen(lua_State *L, FILE *fp, MSize m)
175 char *buf = lj_buf_tmp(L, m); 178 char *buf = lj_buf_tmp(L, m);
176 MSize n = (MSize)fread(buf, 1, m, fp); 179 MSize n = (MSize)fread(buf, 1, m, fp);
177 setstrV(L, L->top++, lj_str_new(L, buf, (size_t)n)); 180 setstrV(L, L->top++, lj_str_new(L, buf, (size_t)n));
181 lj_gc_check(L);
178 return (n > 0 || m == 0); 182 return (n > 0 || m == 0);
179 } else { 183 } else {
180 int c = getc(fp); 184 int c = getc(fp);