Комментарии 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 :)
Я удивлён, что это все не покрыто тестами. Я, конечно, не разработчик, а только балуюсь, но все подобные методы покрываю тестами. Или я не правильно понимаю, что и как тестировать? Я не троллю, мне правда интересно.
Покрытие тестами имеется, но не каждый угол покрыт ими. Можно посмотреть отработку автоматических регресс-тестов, в 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
![](https://habrastorage.org/getpro/habr/upload_files/325/b7d/417/325b7d41778cd6fd9267f12e0d8e7c00.png)
![](https://habrastorage.org/getpro/habr/upload_files/7ee/a3a/108/7eea3a10873f25f4ffa8f6f1b234eb7a.png)
Воистину воодушевляющее достижение! Куда уж "нашим" вышеупомянутым юниксам... :)
Ладно, ладно! Харэ минусовать! Сдаюсь! Я обеими руками за развитие опенсорсного софта! Весь мой ядовитый сарказм исходит от непонимания как за 15 лет (15, КАРЛ!) можно было умудриться не решить элементарных проблем со стабильностью работы ядра и защиты от сбоев на уровне userspace.
Отныне обещаю отключить токсичность сейчас и даже в следующий раз, когда увижу очередные восторги с рекламой ErectOS и призывами попила бюджета для её развития. Чес-слово!
От меня плюс всем в карму! Спасибо, что читаете мои несуразности.
Похоже они втолкнули туда UniATA, я с ним лет 20 назад возился в составе ReactOS))
Его оттуда уже выталкивать собираются, на его место нормальный драйвер ATAPI готовят.
11 мгновений ReactOS: user mode становится лучше?