LINUX.ORG.RU

История изменений

Исправление shdown, (текущая версия) :

Это, конечно, наглая ложь. В ядре твоё UB находят с завидной регулярностью. В основном из-за рефакторинга, когда поменяли один кусок кода, а в другой, связанный с первым, проверить забыли.

Ага. А где опытный разработчик напоролся на UB, про которое он не знал, что это UB? Т.е. вот написал, например,

size_t a = something();
// В 'hi' будут верхние 32 бита, в 'lo' — нижние, и ниипёт
uint32_t hi = a >> 32, lo = a;
?

Круто. А что делать, если хочешь новый стандарт? Перелопачивать весь код?

Ну конечно. Они где-то заявляют обратную совместимость? Насколько я знаю, нет.

Беззакония не было. Было «implementation-defined behaviour».

Было. Посмотри таблицу, оно не укладывалось в то, что стандарт называет implementation-defined behavior.

Исходная версия shdown, :

Это, конечно, наглая ложь. В ядре твоё UB находят с завидной регулярностью. В основном из-за рефакторинга, когда поменяли один кусок кода, а в другой, связанный с первым, проверить забыли.

Ага. А где опытный разработчик напоролся на UB, про которое он не знал, что это UB?

Круто. А что делать, если хочешь новый стандарт? Перелопачивать весь код?

Ну конечно. Они где-то заявляют обратную совместимость? Насколько я знаю, нет.

Беззакония не было. Было «implementation-defined behaviour».

Было. Посмотри таблицу, оно не укладывалось в то, что стандарт называет implementation-defined behavior.