Opened 3 years ago

Closed 3 years ago

#239 closed ожидается проверка (задача сдана)

HW #1 (BMP) Ushakov

Reported by: ushakov.vladislav Owned by: Святослав Власов
Component: HW #1 (BMP) Version: 2.0
Keywords: Cc:

Description


Change History (6)

comment:1 Changed 3 years ago by Святослав Власов

Type: ожидается проверкаожидаются исправления

Корректность -- 0.
Программа падает с сегфолтом даже на простом тесте с леной 0 0 512 512

Стиль -- 3/10

  1. Давай ты всё таки будешь читать/писать хедера в структуру целиком, а не в переменные по одному. Это менее читабельно и генерирует массу magic-numbers, которых мы не любим.
  2. В такой проверке нет смысла, потому что ты сначала обращаешься к массиву, а потом уже проверяешь, т.е. если что-то пойдет не так, ты свалишься в сегфолт до того, как проверишь переменную на корректность:
        char **pix_arr = (char **) malloc(*biHeight * sizeof(char * ));
        for (int i = 0; i < *biHeight; ++i)
            pix_arr[i] = (char *) malloc(*biWidth * 3 + remainder);
        if (pix_arr == NULL) goto Error;
    
  3. Даже если ты перенесешь проверку перед циклом, ты всё равно будешь валиться в сегфолт, потому что в секции Error: у тебя будет обращение к памяти по NULL-pointer.
  4. То, что происходит в функции rotate выглядит крайне избыточным и плохочитаемым. Его точно можно организовать намного проще, подумай над этим.

comment:2 Changed 3 years ago by ushakov.vladislav

Кажется, что не сегфолтится. По крайней мере у меня локально. Ну или я чего-то не понял :/

comment:3 Changed 3 years ago by ushakov.vladislav

Valgrind тоже ничего не показывает.

comment:4 Changed 3 years ago by Святослав Власов

Да, коррапшена не происходит, но возвращаемое значение не 0.
От этого тесты ругаются.
У тебя из save_bmp всегда возвращается -1, поэтому я удалил строчку if (check == -1) return -1; и получил сегфолт.

Когда что-то напишешь в тикет, меняй его статус на "ожидается проверка" без изменения версии, а то иначе я твоего коммента могу не увидеть.
А еще лучше с вопросами пиши в телегу.

comment:5 Changed 3 years ago by ushakov.vladislav

Type: ожидаются исправленияожидается проверка
Version: 1.02.0

Сильно изменил код. Переписал все с использованием структур.

comment:6 Changed 3 years ago by Святослав Власов

Resolution: задача сдана
Status: assignedclosed

Проходят тесты с леной, а тесты с картинками, где есть паддинг, не проходят
10/20 за корректность

Стиль -- 5/10
Нет, ты не переписал с использованием структур. Ты по прежнему читаешь поля отдельно, только не из файла, а из заранее прочитанного буфера. Читать в структуру -- это значит что ты создаешь структуру идентичную той, что записана в хедере файла и читаешь её целиком с файла в память так, что поля записанные в файле накладываются на поля структуры в памяти и их не нужно копировать оттуда по отдельности.

Note: See TracTickets for help on using tickets.