[fcstr.c] Embed a static 64-byte buffer in FcStrBuf

Reduces number of mallocs called from FcStrBufChar in my small test
from 900 down to 6.
This commit is contained in:
Behdad Esfahbod 2009-03-11 13:56:09 -04:00
parent 916640ce40
commit 7d35c11b33
2 changed files with 10 additions and 2 deletions

View File

@ -313,6 +313,7 @@ typedef struct _FcStrBuf {
FcBool failed; FcBool failed;
int len; int len;
int size; int size;
FcChar8 buf_static[16 * sizeof (void *)];
} FcStrBuf; } FcStrBuf;
struct _FcCache { struct _FcCache {

View File

@ -710,11 +710,18 @@ FcUtf16Len (const FcChar8 *string,
void void
FcStrBufInit (FcStrBuf *buf, FcChar8 *init, int size) FcStrBufInit (FcStrBuf *buf, FcChar8 *init, int size)
{ {
buf->buf = init; if (init)
{
buf->buf = init;
buf->size = size;
} else
{
buf->buf = buf->static_buf;
buf->size = sizeof (buf->static_buf);
}
buf->allocated = FcFalse; buf->allocated = FcFalse;
buf->failed = FcFalse; buf->failed = FcFalse;
buf->len = 0; buf->len = 0;
buf->size = size;
} }
void void