mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
parse.y (paser_pfree): recycle memory if possible.
This commit is contained in:
@@ -110,6 +110,8 @@ parser_palloc(parser_state *p, size_t size)
|
||||
return m;
|
||||
}
|
||||
|
||||
#define parser_pfree(ptr) do { if (sizeof(node) <= sizeof(*(ptr))) cons_free((node*)ptr);} while (0)
|
||||
|
||||
static node*
|
||||
cons_gen(parser_state *p, node *car, node *cdr)
|
||||
{
|
||||
@@ -1369,9 +1371,7 @@ static void
|
||||
end_strterm(parser_state *p)
|
||||
{
|
||||
parser_lex_strterm *term = p->lex_strterm->prev;
|
||||
if (sizeof(node) < sizeof(parser_lex_strterm)) {
|
||||
cons_free((node*)p->lex_strterm);
|
||||
}
|
||||
parser_pfree(p->lex_strterm);
|
||||
p->lex_strterm = term;
|
||||
}
|
||||
|
||||
|
||||
@@ -173,6 +173,8 @@ parser_palloc(parser_state *p, size_t size)
|
||||
return m;
|
||||
}
|
||||
|
||||
#define parser_pfree(ptr) do { if (sizeof(node) <= sizeof(*(ptr))) cons_free((node*)ptr);} while (0)
|
||||
|
||||
static node*
|
||||
cons_gen(parser_state *p, node *car, node *cdr)
|
||||
{
|
||||
@@ -1432,9 +1434,7 @@ static void
|
||||
end_strterm(parser_state *p)
|
||||
{
|
||||
parser_lex_strterm *term = p->lex_strterm->prev;
|
||||
if (sizeof(node) < sizeof(parser_lex_strterm)) {
|
||||
cons_free((node*)p->lex_strterm);
|
||||
}
|
||||
parser_pfree(p->lex_strterm);
|
||||
p->lex_strterm = term;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user