aboutsummaryrefslogtreecommitdiff
path: root/src/lib_io.c
diff options
context:
space:
mode:
authorMike Pall <mike>2013-03-18 17:08:37 +0100
committerMike Pall <mike>2013-03-18 17:08:37 +0100
commitd1645c88a189259b38b0a733f59cd01767cd1245 (patch)
tree9e5849cbc697ad369f0c0ec0d4b091c0ca54d27b /src/lib_io.c
parent18d7c975d6017f401c193fecb93081739dc5a94d (diff)
downloadluajit-d1645c88a189259b38b0a733f59cd01767cd1245.tar.gz
luajit-d1645c88a189259b38b0a733f59cd01767cd1245.tar.bz2
luajit-d1645c88a189259b38b0a733f59cd01767cd1245.zip
Clean up TValue to buffer conversions.
Diffstat (limited to 'src/lib_io.c')
-rw-r--r--src/lib_io.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/lib_io.c b/src/lib_io.c
index 5369d450..18d87a89 100644
--- a/src/lib_io.c
+++ b/src/lib_io.c
@@ -231,19 +231,12 @@ static int io_file_write(lua_State *L, FILE *fp, int start)
231 cTValue *tv; 231 cTValue *tv;
232 int status = 1; 232 int status = 1;
233 for (tv = L->base+start; tv < L->top; tv++) { 233 for (tv = L->base+start; tv < L->top; tv++) {
234 if (tvisstr(tv)) { 234 char buf[LJ_STR_NUMBERBUF];
235 MSize len = strV(tv)->len; 235 MSize len;
236 status = status && (fwrite(strVdata(tv), 1, len, fp) == len); 236 const char *p = lj_str_buftv(buf, tv, &len);
237 } else if (tvisint(tv)) { 237 if (!p)
238 char buf[LJ_STR_INTBUF];
239 char *p = lj_str_bufint(buf, intV(tv));
240 size_t len = (size_t)(buf+LJ_STR_INTBUF-p);
241 status = status && (fwrite(p, 1, len, fp) == len);
242 } else if (tvisnum(tv)) {
243 status = status && (fprintf(fp, LUA_NUMBER_FMT, numV(tv)) > 0);
244 } else {
245 lj_err_argt(L, (int)(tv - L->base) + 1, LUA_TSTRING); 238 lj_err_argt(L, (int)(tv - L->base) + 1, LUA_TSTRING);
246 } 239 status = status && (fwrite(p, 1, len, fp) == len);
247 } 240 }
248 if (LJ_52 && status) { 241 if (LJ_52 && status) {
249 L->top = L->base+1; 242 L->top = L->base+1;