- res = data1_mk_node (spec->dh, spec->m);
- res->parent = parent;
- res->which = DATA1N_data;
- res->u.data.what = DATA1I_text;
- res->u.data.len = elen;
- res->u.data.formatted_text = formatted_text;
- if (elen > DATA1_LOCALDATA)
- res->u.data.data = nmem_malloc (spec->m, elen);
- else
- res->u.data.data = res->lbuf;
- memcpy (res->u.data.data, ebuf, elen);
- res->root = parent->root;
-
- parent->last_child = res;
- if (d1_stack[*d1_level])
- d1_stack[*d1_level]->next = res;
- else
- parent->child = res;
- d1_stack[*d1_level] = res;
+ char *old_buf, *new_buf;
+
+ spec->concatBuf[*d1_level]->max = org_len + elen + 256;
+ new_buf = xmalloc (spec->concatBuf[*d1_level]->max);
+ if ((old_buf = spec->concatBuf[*d1_level]->buf))
+ {
+ memcpy (new_buf, old_buf, org_len);
+ xfree (old_buf);
+ }
+ spec->concatBuf[*d1_level]->buf = new_buf;