diff options
Diffstat (limited to 'src/lib_string.c')
-rw-r--r-- | src/lib_string.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/lib_string.c b/src/lib_string.c index db2c275d..cd673478 100644 --- a/src/lib_string.c +++ b/src/lib_string.c | |||
@@ -155,9 +155,7 @@ LJLIB_CF(string_dump) | |||
155 | { | 155 | { |
156 | GCfunc *fn = lj_lib_checkfunc(L, 1); | 156 | GCfunc *fn = lj_lib_checkfunc(L, 1); |
157 | int strip = L->base+1 < L->top && tvistruecond(L->base+1); | 157 | int strip = L->base+1 < L->top && tvistruecond(L->base+1); |
158 | SBuf *sb = &G(L)->tmpbuf; /* Assumes lj_bcwrite() doesn't use tmpbuf. */ | 158 | SBuf *sb = lj_buf_tmp_(L); /* Assumes lj_bcwrite() doesn't use tmpbuf. */ |
159 | setmref(sb->L, L); | ||
160 | lj_buf_reset(sb); | ||
161 | L->top = L->base+1; | 159 | L->top = L->base+1; |
162 | if (!isluafunc(fn) || lj_bcwrite(L, funcproto(fn), writer_buf, sb, strip)) | 160 | if (!isluafunc(fn) || lj_bcwrite(L, funcproto(fn), writer_buf, sb, strip)) |
163 | lj_err_caller(L, LJ_ERR_STRDUMP); | 161 | lj_err_caller(L, LJ_ERR_STRDUMP); |
@@ -851,9 +849,7 @@ LJLIB_CF(string_format) | |||
851 | GCstr *sfmt = lj_lib_checkstr(L, arg); | 849 | GCstr *sfmt = lj_lib_checkstr(L, arg); |
852 | const char *fmt = strdata(sfmt); | 850 | const char *fmt = strdata(sfmt); |
853 | const char *efmt = fmt + sfmt->len; | 851 | const char *efmt = fmt + sfmt->len; |
854 | SBuf *sb = &G(L)->tmpbuf; | 852 | SBuf *sb = lj_buf_tmp_(L); |
855 | setmref(sb->L, L); | ||
856 | lj_buf_reset(sb); | ||
857 | while (fmt < efmt) { | 853 | while (fmt < efmt) { |
858 | if (*fmt != L_ESC || *++fmt == L_ESC) { | 854 | if (*fmt != L_ESC || *++fmt == L_ESC) { |
859 | lj_buf_putb(sb, *fmt++); | 855 | lj_buf_putb(sb, *fmt++); |