diff options
author | Mike Pall <mike> | 2013-03-18 17:08:37 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2013-03-18 17:08:37 +0100 |
commit | d1645c88a189259b38b0a733f59cd01767cd1245 (patch) | |
tree | 9e5849cbc697ad369f0c0ec0d4b091c0ca54d27b /src/lib_io.c | |
parent | 18d7c975d6017f401c193fecb93081739dc5a94d (diff) | |
download | luajit-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.c | 17 |
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; |