Code: Select all
bool CheckStructSize(const T* s) {return s && (s->StructSize >= sizeof(T));}
для чего используется >= , а не просто = ?
защита от новый плагин (новое апи) на старом фаре есть в виде MinFarVersion. но если она некорретна, то проверку CheckStructSize проходим. далее по коду не заполняем все поля структуры (ведь появились новые). плагин не знает об этом , получает ошибочные данные в незаполненных фаром полях.
второй вариант, если просто забыли заполнить StructSize. он не инициализирован , имеет очень большое значение (у меня 3435973836), проверку проходит. и все как бы работает. но в релизной версии значение StructSize уже имеет другое значение (какое ? что то я туплю и не могу понять как отладить релизную версию, кроме как лог писать), и не проходит проверку. плагин не работает.
в итоге из-за этого > ошибка не всплывает во время отладки.