﻿# Как PVS\-Studio защищает от поспешных правок кода, пример N2

Большое количество ошибок программистами допускается просто по невнимательности или из\-за спешки\. Хорошо это видно на небольших неправильных изменениях, вносимых в код\. Рассмотрим как раз такой случай, когда, исправляя одну ошибку, программист добавляет новую\.

![0910_Blender_V595_ru/image2.png](https://import.viva64.com/docx/blog/0910_Blender_V595_ru/image2.png)

Собственно, всё уже видно на приведённой картинке\. В принципе, дальше можно и не читать :\)\. Но рассказать, что к чему, мне всё равно хочется, и я это сделаю\.

Ещё в том году я [начал мониторить](https://pvs-studio.ru/ru/blog/posts/cpp/0807/) с помощью анализатора PVS\-Studio открытый проект Blender\. Но как выяснилось, я оказался достаточно ленив в этом деле\. Проект активно развивается, и мне на почту постоянно приходят уведомления про предупреждения, относящиеся к новому коду\. А у меня то совещание, то написание какой\-то статьи, то ещё что\-то\. Получалось, что обычно я вообще пропускал эти уведомления :\(\. Как результат, за тот год я написал всего пару заметок про свежие ошибки, хотя можно было бы написать намного больше\.

Вчера смотрю, пришло письмо с двумя предупреждениями\. Ну ладно, думаю, дай посмотрю, пока минутка есть\. Одно предупреждение не очень интересное, зато второе – прямо конфетка\. Ну что же, надо побороть лень и описать, как PVS\-Studio может помогать выявлять ошибки при регулярном использовании :\)\.

Итак, @Antonioya сделал коммит из двух строчек, чтобы исправить баг: [Fix T94903: GPencil: Copying keys doesn't preserve Keyframe Type](https://github.com/blender/blender/commit/86b7746e3c31f55425016ade1ec5cee05fdfcb05#diff-dcde9338c1746f011332e27637c4b72f1c839dc4406cbfa992152bff1de52f06)\.

Он поспешил и не заметил, что указатель может быть нулевым\. Об этом свидетельствует проверка указателя на равенство _nullptr_:

```cpp
gpf->key_type = gpfs->key_type;
if (gpf) {
```

В свою очередь анализатор PVS\-Studio заметил аномалию и выдал предупреждение: [V595](https://pvs-studio.ru/ru/docs/warnings/v595/) \[CWE\-476\]: The 'gpf' pointer was utilized before it was verified against nullptr\. Check lines: 458, 459\. editaction\_gpencil\.c

Вот так сразу можно заметить многие ляпы и сократить время на их исправление\. Намного проще найти и исправить ошибку самому программисту, чем возвращаться к этому коду, когда баг выявят тестировщики или пользователи\.

P\.S\. Хотел вначале назвать статью просто "Как PVS\-Studio защищает от поспешных правок кода", но оказывается, [такая статья уже есть](https://pvs-studio.ru/ru/blog/posts/cpp/0817/) и пришлось приписать "пример N2"\. Думаю, со временем количество таких статей будет увеличиваться\. Спасибо за внимание, и попробуйте внедрить [PVS\-Studio](https://pvs-studio.ru/ru/pvs-studio/try-free/) в свой процесс разработки\.