- 1
memset(cb->chars, cb->width * cb->height, ' ');
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+138
memset(cb->chars, cb->width * cb->height, ' ');
Мой однострочный эпик фейл.
И няшаблядский кокомпилятор даже ничего не заподозрил, приводя 4байтовое целое к байту!
Где тут байт?
Короче, криворукая няшаблядская библиотека. Кстати, библиотеку можно считать частью компилятора? Ну, чтобы слово "кокомпилятор" было куда ввернуть.
Возможность вызова функций без предварительного объявления была исключена в стандарте С99. Но даже стандарт С99 не требует наличия прототипа для вызова функции. Например, для С99 достаточно такого объявления 'memset'
и функцую уже можно вызывать. При этом компилятор опять же будет "угадывать" типа параметров как описано выше.
Функциональные языки оказались не первыми. А вывод количества параметров функции - функциональные языки до сих пор не осилили.
V512 A call of the 'memset' function will lead to underflow of the buffer 'chars'
V512 A call of the 'memset' function will lead to overflow of the buffer 'chars'
и вообще это супер анализатор по выявлению ошибок при переносе на x64 или с линуксячьего
LP64 на вендовый LLP64
Народ против PVS-Studio
Какая-нибудь Java просто не дала бы преобразовать int в byte без явного каста.
http://govnokod.ru/10058#comment136594