среда, 17 февраля 2021 г.

Добавил индексы для параметров

 Продолжаю исправлять ошибки, и таки нашёл мега-жирный баг. При копировании значения у меня брался указатель и передавался в функцию, которая принимает ссылку. Как это всё вообще работало - непонятно, поскольку это было просто в функции конструктора копирования значения.

Копирование содержимого стека через $*

Воистину, самый коварный баг может подстерегать программиста, там где просто нужно скопировать значения. 

y = x 

А на самом деле нужно какой-нибудь

*y = **x

Понял одну не самую очевидную вещь, в чём отличие $1 от $* 1. В первом случае мы берём объект на стеке с индексом 1, во втором - копию объектов стека и из них объект с индексом 1. То есть $* и $$* - должны всегда возвращать копию.

Этим я сейчас и занялся, но день почему-то очень сонный. Мозг спит. Но я рад, что так быстро нашёл ошибку в конструкторе копирования. Из-за неё было просто непонятно, откуда лезут баги. Вроде всё работает, а вдруг - раз и почему-то данные потерялись.

Написал на форум поддержки clang - может быть подскажут, как включить сообщения об ошибках при передаче указателя вместо ссылки.

Комментариев нет: