- fp = enter(defnl(s, FIELD, t, p->value[NL_OFFS]));
+ /*
+ * it used to be easy to keep track of offsets of fields
+ * and total sizes of records.
+ * but now, the offset of the field is aligned
+ * so only it knows it's offset, and calculating
+ * the total size of the record is based on it,
+ * rather than just the width of the field.
+ */
+ fp = enter( defnl( s , FIELD , t , roundup( p -> value[ NL_OFFS ]
+ , align( t ) ) ) );