optimize pic_chunk

This commit is contained in:
Yuichi Nishiwaki 2016-02-08 01:17:33 +09:00
parent f263e9432e
commit 267cfb0a02
1 changed files with 3 additions and 2 deletions

View File

@ -26,8 +26,9 @@ struct pic_rope {
#define CHUNK_DECREF(c) do { \ #define CHUNK_DECREF(c) do { \
struct pic_chunk *c_ = (c); \ struct pic_chunk *c_ = (c); \
if (! --c_->refcnt) { \ if (! --c_->refcnt) { \
if (c_->str != c_->buf) \ if (c_->str != c_->buf) { \
pic_free(pic, c_->str); \ pic_free(pic, c_->str); \
} \
pic_free(pic, c_); \ pic_free(pic, c_); \
} \ } \
} while (0) } while (0)
@ -56,7 +57,7 @@ pic_make_chunk(pic_state *pic, const char *str, size_t len)
{ {
struct pic_chunk *c; struct pic_chunk *c;
c = pic_malloc(pic, sizeof(struct pic_chunk) + len); c = pic_malloc(pic, offsetof(struct pic_chunk, buf) + len + 1);
c->refcnt = 1; c->refcnt = 1;
c->str = c->buf; c->str = c->buf;
c->len = len; c->len = len;