--- a/dbutils/field.c Sun Jan 04 17:45:50 2026 +0100 +++ b/dbutils/field.c Sun Jan 04 18:09:59 2026 +0100 @@ -1238,7 +1238,7 @@ } static int linkedlist_add(DBUObjectResult *result, DBUObject parent, DBUClass *type, void *obj, CxList *fk, const CxAllocator *a) { DBUOffsetField *field = result->userdata1; - DBUClass *cls = result->userdata2; + DBUClass *cls = result->type; CxList **list = (CxList**)(parent+field->offset); if(!*list) { *list = cxLinkedListCreate(a, CX_STORE_POINTERS); @@ -1294,13 +1294,14 @@ memset(field, 0, sizeof(DBUOffsetField)); field->offset = offset; field->def.def = 0; + field->field.builder.type = foreign_cls; field->field.builder.userdata1 = field; field->field.builder.userdata2 = foreign_cls; field->field.builder.create = linkedlist_create_obj; field->field.builder.add = linkedlist_add; field->field.toList = cxlist_tolist; // TODO: can we pass name to dbuClassAddObjField? - dbuClassAddObjField(cls, NULL, (DBUField*)field, foreign_cls); + dbuClassAddObjField(cls, name, (DBUField*)field, foreign_cls); field->field.name = name ? cx_strdup(cx_str(name)) : (cxmutstr){NULL,0}; //dbuClassAddParentObjField(foreign_cls, name, cls, (DBUField*)field); }