diff options
Diffstat (limited to 'src/lib_buffer.c')
| -rw-r--r-- | src/lib_buffer.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/lib_buffer.c b/src/lib_buffer.c index e21362b8..c9ef9510 100644 --- a/src/lib_buffer.c +++ b/src/lib_buffer.c | |||
| @@ -22,15 +22,13 @@ | |||
| 22 | 22 | ||
| 23 | #define LJLIB_MODULE_buffer | 23 | #define LJLIB_MODULE_buffer |
| 24 | 24 | ||
| 25 | /* Note: this uses interim structs until the SBuf reorg. */ | ||
| 26 | |||
| 27 | LJLIB_CF(buffer_encode) | 25 | LJLIB_CF(buffer_encode) |
| 28 | { | 26 | { |
| 29 | cTValue *o = lj_lib_checkany(L, 1); | 27 | cTValue *o = lj_lib_checkany(L, 1); |
| 30 | StrBuf sbuf; | 28 | SBufExt sbx; |
| 31 | sbuf.sb = lj_buf_tmp_(L); | 29 | lj_bufx_init_borrow(L, &sbx, &G(L)->tmpbuf); |
| 32 | lj_serialize_put(&sbuf, o); | 30 | lj_serialize_put(&sbx, o); |
| 33 | setstrV(L, L->top++, lj_buf_str(L, sbuf.sb)); | 31 | setstrV(L, L->top++, lj_buf_str(L, (SBuf *)&sbx)); |
| 34 | lj_gc_check(L); | 32 | lj_gc_check(L); |
| 35 | return 1; | 33 | return 1; |
| 36 | } | 34 | } |
| @@ -38,16 +36,11 @@ LJLIB_CF(buffer_encode) | |||
| 38 | LJLIB_CF(buffer_decode) | 36 | LJLIB_CF(buffer_decode) |
| 39 | { | 37 | { |
| 40 | GCstr *str = lj_lib_checkstr(L, 1); | 38 | GCstr *str = lj_lib_checkstr(L, 1); |
| 41 | char *p = (char *)strdata(str); | 39 | SBufExt sbx; |
| 42 | SBuf sb; | 40 | lj_bufx_init_cow(L, &sbx, strdata(str), str->len); |
| 43 | StrBuf sbuf; | 41 | /* No need to set sbx.cowref here. */ |
| 44 | setsbufL(&sb, L); | ||
| 45 | sb.b = p; | ||
| 46 | sb.w = sb.e = p + str->len; | ||
| 47 | sbuf.sb = &sb; | ||
| 48 | sbuf.r = p; | ||
| 49 | setnilV(L->top++); | 42 | setnilV(L->top++); |
| 50 | lj_serialize_get(&sbuf, L->top-1); | 43 | lj_serialize_get(&sbx, L->top-1); |
| 51 | lj_gc_check(L); | 44 | lj_gc_check(L); |
| 52 | return 1; | 45 | return 1; |
| 53 | } | 46 | } |
