Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

RTS2, работа над ошибками

Позавчера добавил в конфигурации RTS2 флаги "-Werror -Wextra" к CFLAGS и начал править
Два с половиной дня у меня заняло исправление всех (кроме одной) вещей, на которые ругался gcc. Лишь одну пришлось оставить: автор использует старую версию libjsoncpp, и gcc ругается, что кое-что уже "deprecated". Но с этим мне разбираться совсем никакого желания нет, если уж прижмет, заменю на свой JSON-парсер.

Самым распространенным у автора было не помечать как __attribute__((__unused__)) неиспользуемые аргументы функций. Вот и думай: то ли лишних аргументов он наделал ради того, чтобы в классах-наследниках их использовать, то ли это рудимент от старых версий и нужен рефакторинг.
Вторым по популярности была попытка присвоить const значениям, возвращаемым функциями.
Еще автор часто путал ssize_t и size_t (вроде size_t x = someth(); if(x < 0)…).
В одном месте вообще жесть была: мода вычислялась по прямой гистограмме! И ладно бы, было ограничение на 16 бит, так нет: даже для 64-битных выражений была попытка выделить 10¹⁹ байт и построить гистограмму.
В нескольких местах отсутствовала проверка кодов возврата system, open и т.п.
Случайно нашел утечку памяти (благодаря предупреждению о сравнении знаковой и беззнаковой величины в той же функции).

Понятно, что множество людей внесли вклад в RTS2: там содержатся куски не только на С++, но и на С. Но везде нет-нет, да какие-то огрехи появляются. Видимо, поэтому до сих пор в репозитории на гитхабе чуть ли не каждый день появляется по несколько коммитов с исправлением тех или иных ошибок.

Явно нужны 5-10 студентов, которые бы провели полный рефакторинг RTS2 с удалением deprecated конструкций, фиксированием проблем и приведением всего дерева кода в одинаковый стиль оформления. Жаль, что нельзя на С RTS2 переписать — из-за явного преимущества ООП в данном случае.
Tags: rts2
Subscribe

  • Хеши строковых команд для МК

    Долго я к этому шел, но, похоже, пора уже: однобуквенные команды сложно запоминать (особенно если команд толпа, и большая часть с этими буквами…

  • M$ teams…

    Начал с сегодняшнего дня студентам ЮФУ удаленно лекции читать. У них все завязано на различные корпорации зла. И базовая работа - через teams. ОК,…

  • Почему systemd — дерьмо

    Уже давно на эту статейку натыкался, но все забывал в "закладки" добавить. Вот, добавляю: "systemd — отстой". Советую эту статейку почитать…

promo eddy_em september 3, 12:13 8
Buy for 10 tokens
Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую сборку (как обычно, местами пришлось "доработать напильником"): Пока прибор без названия (да и как-то не лезет в голову ничего, у меня нет…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 2 comments