Как стать автором
Обновить

Комментарии 20

ip->name[strlen(ip->name)] = '\0';

Выхода за границу массива здесь нет, но сама операция бессмысленна. '\0' записывается туда, где он и так уже находится. Строчку можно смело удалить.

Все же идея была сделать вот так:

ip->name[sizeof(ip->name)-1] = '\0';

и это стандартный паттерн использования в комбинации с strncpy

Все же идея была сделать вот так, и это стандартный паттерн использования в комбинации с strncpy

Вполне возможно, но мы уже никогда не узнаем, что же хотел сделать автор — blame показывает, что последний раз в FTP-клиент залезали 17 февраля 2006 года. Сделали и забыли.
Я бы всё же убрал эту операцию целиком.

Явное всегда лучше. По определению, если strncpy наступает на конец выданного буфера, она НЕ записывает туда ноль (я вежливый кролик, и промолчу про это поведение для str* функции). Да, можно полагаться на неявное обнуление структуры в данном конкретном случае в данном конкретном месте, но доп запись нуля никому хуже не сделает, а если там уже гарантирован ноль и компилятор может это доказать - вон он пусть и выкидывает эту строку (тем более, что для случая с sizeof он это сделать точно может).

Спасибо за полезный комментарий! :)

Теперь пора спуститься ещё глубже в пользовательской области. COM, ActiveX — не бросает ли вас в дрожь при упоминании этих сущностей?

Да ладно, они же такие милые и уютные IUnknown и IDispatch, компилятор MIDL, OLE,

Половина ошибок на самом деле в Wine. Технически они, конечно, и в ReactOS есть по факту переиспользования кода, но подложили их туда вовсе не разработчики ReactOS :)

Перефразирую. Написали код с ошибками не разработчики ReactOS.

Я удивлён, что это все не покрыто тестами. Я, конечно, не разработчик, а только балуюсь, но все подобные методы покрываю тестами. Или я не правильно понимаю, что и как тестировать? Я не троллю, мне правда интересно.

Покрытие тестами имеется, но не каждый угол покрыт ими. Можно посмотреть отработку автоматических регресс-тестов, в GitHub дополнительно каждый pull request прогоняется на «выживаемость» сборки. Есть хотя бы одна проваленная сборка не по причине технической неполадки (частая история с Visual Studio 2015) — PR не допускают к мерджу.

Кто-то даже фаззер натравливал на систему, от чего та громко взрывалась, не выдерживая потока неправильных данных. Скажем так, в ReactOS весь win32k просит капитального ремонта, но из-за очень интересной политики их релиз-менеджера, которому важнее почистить пробелы в ресурсных файлах, сэкономить 0.5 мс и два байта на компиляции отладочной сборки, чем заняться делом, все попытки побороть это проклятье юзерспейса заканчиваются утратой энтузиазма. Инициативная группа пытается (и у неё получается) проталкивать переход на целевую платформу NT 6.x, попутно выбрасывая цистерны костылей и велосипедов из системных библиотек, но, увы, процесс идёт медленно. Политика релиз-менеджера вызывает отторжение у новичков, из-за этого очень мало людей узнаёт про то, что с этой проблемой борются.

Моё знакомство с ReactOS после моря розовых соплей в рекламе:
Лет 15 назад думаю, попробую — синий экран смерти на этапе установки.
Лет 10 назад. Ну уже все баги починили, попробую — синий экран смерти на этапе установки.
Лет 5 назад думаю, ну хоть на виртуалке гляну что за зверь да попробую — синий экран смерти сразу после процесса установки.
Сейчас думаю, что уже никогда не попробую. 15 лет обошёлся как-то и без этого говноподелия, и даже без Windows, значит и дальше обойдусь! :-D

обошёлся как-то и без этого говноподелия, и даже без Windows

У вас просто нормальной операционной системы не было, сидите на своих юникса и плюетесь слюнями в нормальных людей

Сарказм оценил. Улыбнуло :-)

В нормальных людей я не плевал, а поделился своим опытом "знакомства" с ReactOS.

Ещё вспомнил момент, как мне приятель делал презентацию. На ней ReactOS даже запустилась и показала Проводник, но ушла в BSOD в процессе установки MS Office.

но ушла в BSOD в процессе установки MS Office.

Раз за давностью лет описываются события, то на всякий случай внесу чуток радости — Office 2007 успешно устанавливается на ночных сборках 0.4.15. Есть глюки по интерфейсу, но несколько месяцев назад ситуация была куда хуже — слайды в PowerPoint рисовались вверх ногами вместе с внутренним интерфейсом, а Word рассыпался на части. Сейчас Word в лучшем случае рвётся при переключении отображения линейки и глючит шрифтами..

Hidden text

Воистину воодушевляющее достижение! Куда уж "нашим" вышеупомянутым юниксам... :)

Ладно, ладно! Харэ минусовать! Сдаюсь! Я обеими руками за развитие опенсорсного софта! Весь мой ядовитый сарказм исходит от непонимания как за 15 лет (15, КАРЛ!) можно было умудриться не решить элементарных проблем со стабильностью работы ядра и защиты от сбоев на уровне userspace.

Отныне обещаю отключить токсичность сейчас и даже в следующий раз, когда увижу очередные восторги с рекламой ErectOS и призывами попила бюджета для её развития. Чес-слово!

От меня плюс всем в карму! Спасибо, что читаете мои несуразности.

Так это всё правда, я скачал последний reactos и после перезагрузки он начал вечно показывать синий экран

Последний релиз 0.4.14 или ночник 0.4.15?

0.4.15 установка для рабочей станции

Похоже они втолкнули туда UniATA, я с ним лет 20 назад возился в составе ReactOS))

Его оттуда уже выталкивать собираются, на его место нормальный драйвер ATAPI готовят.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий