Siemargl wrote:Design by contract
А какое отношение это имеет конкретно к нашему случаю?
А так всё правильно, конечно.
Каждому инструменту должно быть своё место.
Языки, изначально поддерживающие средства для контрактного программирования:
...
Component Pascal, Modula-2, Modula-3, Oberon-2, Oberon-07/11, Zonnon, Active Oberon, Ada 2012
IgorA wrote:Потому даже если пользователь следуя документации выделит памяти больше 4кб диалог может зависнуть, что и было устранено в ревизии
А, ну это, оказывается, ограничение самого диалога.
IgorA wrote:Мне кажется что в серьёзных проектах системная библиотека не должна виснуть из-за того что кто-то не правильно задал параметры, потому что это бросает тень на стабильность работы всей системы.
Существуют, например, системные функции, принимающие размер буфера. Ну давай, сделай валидацию
IgorA wrote:Вдруг какой-нибудь зловредный хакер захочет написать вирус для слома системы, в таком случае системная библиотека которая будет копировать байты непонятно куда при неправильно переданных параметрах для него будет находкой. Я думаю что это дыра в безопасности которую нужно закрыть.
Если хакер захочет, он это сделает.
Не "непонятно куда", а ровно туда, куда указано в параметрах.
Возможно, в твоём понимании неправильные параметры — это только размер, а в реальности — это вообще любой параметр.
Я могу указатель передать 0xFFFFFFFF. Будешь делать валидацию?