LINUX.ORG.RU
ФорумTalks

Попробовали мы тут в демо режиме натравить на нас пивас

 


0

2
i32 xxxx(const void * p1, const void * p2)
{
    const u8   * p1_u8 = p1;
    const u8   * p2_u8 = p2;

    if (p1_u8 == p2_u8)
        return 0;
    if (p1_u8 == NULL)
        return *p2_u8;  // 403
    if (p2_u8 == NULL)  // 404
        return *p1_u8;
V595 The 'p2_u8' pointer was utilized before it was verified against nullptr. Check lines: 403, 404.

Короче эта хреновина не в состоянии элементарно попеременно подставить NULL/val во входных данных как это делает cppcheck/clang-tidy.

Такие дела.

★★★★★
Ответ на: комментарий от i-rinat

Плюс внутри фиксы на все вот такие упоминания в стандарте:

If the memory areas overlap, the results are undefined.

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от PPP328

Плюс внутри фиксы на все вот такие упоминания в стандарте:

If the memory areas overlap, the results are undefined.

В таких случаях просто используют memmove

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

memcpy быстрее, чем memmove. Можно пытаться предусмотреть миллионы случаев, пытаясь понять, пересекутся области или нет и потом все равно обосраться, а можно просто использовать функцию с префиксом и положится на автоматический детект.

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от PPP328

memcpy быстрее, чем memmove

Оно быстрее за счет того, что ничего не проверяет.

tailgunner ★★★★★
()
Ответ на: комментарий от PPP328

на все вот такие упоминания в стандарте

Стандарт на то и стандарт, чтобы быть стандартом. Вы там придумали что-то своё, но обозвали именами стандартных функций.

Поздравляю, вы нарушили правило наименьшего удивления. Гордитесь там этим, наверное?

i-rinat ★★★★★
()
21 мая 2018 г.

Достаточно частый паттерн, на котором ломаются коммерческие статические анализаторы. Просто их гоняют с разными целями, а они пытаются быть средним арифметическим.

В проекте с большим количеством такого кода следует больше ориентироваться на юнит-тесты и уделять им максимум внимания, ну и пользоваться хорошо настраиваемыми анализаторами и реально потратить время на их настройку и написание своих проверок / модификацию существующих.

slapin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.