+ }
+
+ for (i = 0; i < nuses; i++) {
+ if (ep->uses[i].name == 0)
+ useoffsets[i] = ABSENT_OFFSET;
+ else
+ useoffsets[i] = (int) (ep->uses[i].name - stringbuf);
+ }
+
+ TYPE_MALLOC(char, next_free, tp->str_table);
+ (void) memcpy(tp->str_table, stringbuf, next_free);
+
+ tp->term_names = tp->str_table + n;
+ for_each_string(i, &(ep->tterm)) {
+ if (i < SIZEOF(offsets)) {
+ if (offsets[i] == ABSENT_OFFSET) {
+ tp->Strings[i] = ABSENT_STRING;
+ } else if (offsets[i] == CANCELLED_OFFSET) {
+ tp->Strings[i] = CANCELLED_STRING;
+ } else {
+ tp->Strings[i] = tp->str_table + offsets[i];
+ }
+ }
+ }