forked from GitHub/gf-core
optimize the reading of strings in the grammar loader.
This commit is contained in:
@@ -91,38 +91,15 @@ pgf_read_len(PgfReader* rdr)
|
||||
static PgfCId
|
||||
pgf_read_cid(PgfReader* rdr)
|
||||
{
|
||||
GuPool* tmp_pool = gu_new_pool();
|
||||
GuStringBuf* sbuf = gu_string_buf(tmp_pool);
|
||||
GuOut* out = gu_string_buf_out(sbuf);
|
||||
|
||||
size_t len = pgf_read_len(rdr);
|
||||
for (size_t i = 0; i < len; i++) {
|
||||
// CIds are in latin-1
|
||||
GuUCS ucs = gu_in_u8(rdr->in, rdr->err);
|
||||
gu_out_utf8(ucs, out, rdr->err);
|
||||
}
|
||||
GuString str = gu_string_buf_freeze(sbuf, rdr->opool);
|
||||
gu_pool_free(tmp_pool);
|
||||
return str;
|
||||
return gu_string_read_latin1(len, rdr->opool, rdr->in, rdr->err);
|
||||
}
|
||||
|
||||
static GuString
|
||||
pgf_read_string(PgfReader* rdr)
|
||||
{
|
||||
GuPool* tmp_pool = gu_new_pool();
|
||||
GuStringBuf* sbuf = gu_string_buf(tmp_pool);
|
||||
GuOut* out = gu_string_buf_out(sbuf);
|
||||
|
||||
GuLength len = pgf_read_len(rdr);
|
||||
|
||||
for (size_t i = 0; i < len; i++) {
|
||||
GuUCS ucs = gu_in_utf8(rdr->in, rdr->err);
|
||||
gu_out_utf8(ucs, out, rdr->err);
|
||||
}
|
||||
GuString str = gu_string_buf_freeze(sbuf, rdr->opool);
|
||||
gu_pool_free(tmp_pool);
|
||||
|
||||
return str;
|
||||
return gu_string_read(len, rdr->opool, rdr->in, rdr->err);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user