+ {
+ org_len = 0;
+
+ 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 = 0;
+ res->u.data.formatted_text = formatted_text;
+#if 0
+ 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);
+#else
+ res->u.data.data = 0;
+#endif
+ 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;
+ }
+ if (org_len + elen >= spec->concatBuf[*d1_level]->max)
+ {
+ 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;
+ }
+ assert (spec->concatBuf[*d1_level]);
+ memcpy (spec->concatBuf[*d1_level]->buf + org_len, ebuf, elen);
+ res->u.data.len += elen;