- {
- TRACK_CTX("new symbol creation");
- TRACK_PUSH;
-
- q = xmalloc(sz);
- q->b.next = *bin;
- q->b.hash = hash;
- q->len = len;
- if (n) {
- if (len <= SYM_BUFSZ)
- memcpy(q->name.b, n, len);
- else {
- TRY {
- q->name.p = sub_alloc(len);
- memcpy(q->name.p, n, len);
- } CATCH {
- free(q);
- TRACK_POP;
- RETHROW;
- } END_TRY;
- }
+ q = x_alloc(t->t.a, sz);
+ q->b.next = *bin;
+ q->b.hash = hash;
+ q->len = len;
+ if (n) {
+ if (len <= SYM_BUFSZ)
+ memcpy(q->name.b, n, len);
+ else {
+ q->name.p = subarena_alloc(t->s, len);
+ memcpy(q->name.p, n, len);