Такое ощущение, будто на время выполнения вызова процедуры структура копируется куда-то (на стэк?), а потом копируется или не копируется обратно в зависимости от отсутствия или наличия метки readonly.