The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Проект Curl избавился от использования функции strcpy в коде"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от opennews (?), 31-Дек-25, 10:12 
Дэниел Cтенберг (Daniel Stenberg), автор утилиты для получения и отправки данных по сети curl, объявил о прекращении использования функции strcpy() в кодовой базе проекта и запрете применения данной функции в дальнейшем. Решение является продолжением инициированного в прошлом году отказа от использования функции strncpy(), копирующей заданное число байт из входящей строки. Применение strncpy() создавало опасность возникновения ошибок из-за  пропуска нулевого символа в конце строки или добавочного заполнения нулями...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=64532

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Проект Curl избавился от использования функции strcpy в коде"  +4 +/
Сообщение от Ilnarildarovuchemail (?), 31-Дек-25, 10:12 
Молодцы, хорошее и safe изменение!
Ответить | Правка | Наверх | Cообщить модератору

20. "Проект Curl избавился от использования функции strcpy в коде"  +20 +/
Сообщение от Аноним (20), 31-Дек-25, 11:35 
Очень affordable
Ответить | Правка | Наверх | Cообщить модератору

89. "Проект Curl избавился от использования функции strcpy в коде"  +7 +/
Сообщение от Аноним (89), 31-Дек-25, 14:26 
И что только сишники не наворотят, лишь бы паскаль не изучать.
Ответить | Правка | Наверх | Cообщить модератору

94. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от Аноним (94), 31-Дек-25, 14:33 
Утомительны эти ваши begin/endы.
Ответить | Правка | Наверх | Cообщить модератору

126. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (126), 31-Дек-25, 15:43 
С разморозкой! Они проставляются современными редакторами кода автоматически. И уже очень давно.
Ответить | Правка | Наверх | Cообщить модератору

130. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Анлним (?), 31-Дек-25, 15:54 
Каеф. Бесполезные символы (как и {}) прославляются автоматически, вместо того чтобы просто от них избавиться
Ответить | Правка | Наверх | Cообщить модератору

168. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Илья (??), 31-Дек-25, 20:53 
А альтернатив-то и нет.
Ответить | Правка | Наверх | Cообщить модератору

216. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (216), 01-Янв-26, 01:54 
Почему нет? А как же питон?
Ответить | Правка | Наверх | Cообщить модератору

213. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (89), 01-Янв-26, 00:43 
> Утомительны эти ваши begin/endы.

Ага, лучше CVE строчить про переполнение буферов.

Ответить | Правка | К родителю #94 | Наверх | Cообщить модератору

118. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (-), 31-Дек-25, 15:16 
В современном паскале страшный зоопарк строк. Там есть алиас string который компилятор заменяет на ansistring (однобайтовые символы + кодировка) или widestring (двухбайтовые ютф) или shortstring(это как первые только не длинее 255 символов и длина в первом байте). И есть ещё указатели на соответсвующие типы символов для каждой строки, которые могут указывать на целую строку пока не встретится нулевой (крч, логика как в си). В чистых паскалевских проектах строки вообще не доставляют проблем, но вот когда нужно выйти из манямирка и обратится к библиотеке на си, то строки сразу прекращаются в ужс-ужс череватый сегфолтами.
Ответить | Правка | К родителю #89 | Наверх | Cообщить модератору

148. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от Ivanemail (??), 31-Дек-25, 17:40 
Я там игрался немного. UTF-8 внутри ansi string представляется идеальным вариантом. Для legacy проектов, завязанных на широкие символы как-в-Винде (Free Vision, например, зачем-то именно так портировали) — wide string.

Но вот то, что для бесшовной работы всего этого надо подключать юнит, который ещё сначала надо выгуглить - это жесть!

Ответить | Правка | Наверх | Cообщить модератору

149. "Проект Curl избавился от использования функции strcpy в коде"  +3 +/
Сообщение от Ivanemail (??), 31-Дек-25, 17:44 
> внутри ansi string

и
UTF8Length(s);
UTF8Copy(s, 1, 5);
и т.д.

, я, кстати, попросил перенести их из lazarus в стандартную библиотеку, и они перенесли

Ответить | Правка | Наверх | Cообщить модератору

165. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (165), 31-Дек-25, 20:03 
Верно. Кто о чем, а сишники все буфер считают, вместо того, чтобы праздновать Новый год)

Так что в кафешках их днём с огнём не сыщешь)

Ответить | Правка | К родителю #89 | Наверх | Cообщить модератору

56. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (56), 31-Дек-25, 13:33 
А всего-то нужно было Кернигана-Ритчи прочитать.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

71. "Проект Curl избавился от использования функции strcpy в коде"  +8 +/
Сообщение от Аноним (71), 31-Дек-25, 13:55 
И иконку перед монитором чтобы она защищала написанный код.
Ответить | Правка | Наверх | Cообщить модератору

102. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от seg (?), 31-Дек-25, 14:43 
Теперь хотя бы понятно за что сишников хейтят. А все как всегда - не читал, но проповедую.
Ответить | Правка | К родителю #56 | Наверх | Cообщить модератору

117. Скрыто модератором  +3 +/
Сообщение от Вася (??), 31-Дек-25, 15:15 
Ответить | Правка | Наверх | Cообщить модератору

133. Скрыто модератором  –1 +/
Сообщение от Аноним (133), 31-Дек-25, 16:27 
Ответить | Правка | Наверх | Cообщить модератору

183. Скрыто модератором  +1 +/
Сообщение от Аноним (183), 31-Дек-25, 22:33 
Ответить | Правка | Наверх | Cообщить модератору

141. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Тон (?), 31-Дек-25, 16:51 
Смотря какой fabric
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

172. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от anonymous (??), 31-Дек-25, 21:32 
Когда уже строки вместо указателей сделают?
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

3. "Проект Curl избавился от использования функции strcpy в коде"  +6 +/
Сообщение от Bottle (?), 31-Дек-25, 10:19 
А могли бы использовать C++ и не пилить велосипед со строками...
Ответить | Правка | Наверх | Cообщить модератору

9. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (9), 31-Дек-25, 10:45 
а могли бы использовать питон и не заморачиваться вообще, а могли бы заплатить денег индусам и им бы все накодили, а могли бы найти гадалку чтобы она им искала ошибки через спиритические сеансы, ....сколько возможностей упущенно, ай яй яй
Ответить | Правка | Наверх | Cообщить модератору

66. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (56), 31-Дек-25, 13:46 
>  а могли бы заплатить денег индусам и им бы все накодили

Ради того, чтобы строку скопировать в другую строку? Им (плательщикам) уже ничто не поможет.

Ответить | Правка | Наверх | Cообщить модератору

169. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Илья (??), 31-Дек-25, 20:55 
>питон

Упаси госпаде

Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

11. "Проект Curl избавился от использования функции strcpy в коде"  –9 +/
Сообщение от Аноним (-), 31-Дек-25, 10:53 
Поясню, программирование на чистом Си похоже на поэзию. Когда вы пишите стихи, люди жившие до вас много раз писали о том, о чём пишите Вы. Но данный факт не является причиной того что не надо писать стихи.

Что касается технической стороны, C++ не нужен. В учебниках и Интернете много всяких идиом и готовых функций на Си, которые программист может тупо пере-использовать. А если программсит напишет свою функцию, тоже неплохо. Во всяком случае это называется свободный выбор, а не велосипед.

Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

57. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от Аноним (94), 31-Дек-25, 13:34 
Программирование на чистом Си похоже на письмо по слогам.
Ответить | Правка | Наверх | Cообщить модератору

60. "Проект Curl избавился от использования функции strcpy в коде"  +3 +/
Сообщение от Zulu (?), 31-Дек-25, 13:39 
Самурай без меча подобен самураю с мечом, но без меча.
Ответить | Правка | Наверх | Cообщить модератору

84. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (94), 31-Дек-25, 14:14 
Но не все хотят быть самураями. Поэтому сейчас для микроконтроллеров мало кто пишет на ассемблере.
Ответить | Правка | Наверх | Cообщить модератору

59. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от Аноним (56), 31-Дек-25, 13:37 
> Поясню, программирование на чистом Си похоже на поэзию.

Абсолютно согласен. Мне напоминает Маяковского и Блока. Причем эстетика, внешний вид текста - основа всего остального.
Но есть отдельные личности, которые из совершенного инструмента делают непотребство (с примером можно ознакомиться в соседней теме), а в случае неизбежной неудачи обвиняют инструмент.

Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

73. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от cnjzxir (?), 31-Дек-25, 13:57 
Можно примеры?
Ответить | Правка | Наверх | Cообщить модератору

82. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (-), 31-Дек-25, 14:11 
> Абсолютно согласен. Мне напоминает Маяковского

Для написания на СИ тоже нужно быть куколдом и плаксой?

> Причем эстетика, внешний вид текста - основа всего остального.

Т.е главное как оно выглядит, как работает уже не важно))?

> Но есть отдельные личности, которые из совершенного инструмента делают непотребство (с примером можно ознакомиться в соседней теме),

Т.е все СИшники.
Глупейшие ошибки встречаются в ядре линукс, криптографичечких библиотеках (ssl/ssh), стандартных библиотеках (glibc), просто библиотеках (libxml, libwebp), шрифтах (freeType), утилитах (curl, sudo) ...

Возможно где-то есть НАСТОЯЩИЕ СИшники, но очевидно код они не пишут.

> а в случае неизбежной неудачи обвиняют инструмент.

Если неудача неизбежна, то возможно инструмент овно)?


Ответить | Правка | К родителю #59 | Наверх | Cообщить модератору

99. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (-), 31-Дек-25, 14:38 
>Т.е главное как оно выглядит, как работает уже не важно))?

Зачем передёргиваешь, он об этом не говорил.

>Глупейшие ошибки встречаются в

Ой не надо так драматизировать, ошибки исправляются.

>Если неудача неизбежна, то возможно инструмент овно)?

Кен Томпсон с тобой не согласен. Си это замечательный инструмент.

Ответить | Правка | Наверх | Cообщить модератору

170. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Илья (??), 31-Дек-25, 21:04 
>Кен Томпсон с тобой не согласен

А можно хотя бы парочку несогласных?

Ответить | Правка | Наверх | Cообщить модератору

196. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (196), 31-Дек-25, 23:28 
Контраргументов нет. Поэтому пошло хамство.
Ответить | Правка | Наверх | Cообщить модератору

182. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 31-Дек-25, 22:33 
> Ой не надо так драматизировать, ошибки исправляются.

Надеюсь ты такого не услышишь от своего врача или мамы))

Да, они исправляются, но главное что они допускаются.
Постоянно и года в год, одни и те же.

> Кен Томпсон с тобой не согласен. Си это замечательный инструмент.

Настолько, что Кен свалил в гугл и запилил Го.
А так да, замечательный!
Особенно если на нем перестать писать.

Ответить | Правка | К родителю #99 | Наверх | Cообщить модератору

198. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (196), 31-Дек-25, 23:32 
>Надеюсь ты такого не услышишь от своего врача или мамы))

Так тебе уже говорили - не драматизируй.

>главное что они допускаются.
>Постоянно и года в год, одни и те же.

А ты чо хотел живой язык - живые люди. только в мёртвом языке ошибок нет.

>Настолько, что Кен свалил в гугл и запилил Го

Кена попросили написать Go. Тупые программисты Google оказываются не умеют в системное программирование. А микроконтроллеры, и вообще системщину он пишет только на Си.

Ответить | Правка | Наверх | Cообщить модератору

85. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (94), 31-Дек-25, 14:19 
Си и эстетика... сомнительно совместимые понятия. Но Раст, в этом плане, ещё хуже.
Ответить | Правка | К родителю #59 | Наверх | Cообщить модератору

142. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (142), 31-Дек-25, 16:58 
Скажите, какой ЯП по-вашему эстетичен?
Ответить | Правка | Наверх | Cообщить модератору

171. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Илья (??), 31-Дек-25, 21:04 
С#
Ответить | Правка | Наверх | Cообщить модератору

218. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Rezzet (??), 01-Янв-26, 02:10 
Может быть С# или Go или Пистон эстетичны и лаконичны, но это только если не вдаваться какая дичь там под капотом творится и что сначала им нужен их рантайм(или виртуальная машина) и уже потом они будут исполняться и простые строчки кода будет превращаться в тонны и трилионы процессорных инструкций, а потом еще прийдет сборщик мусора и скажет: "подожжжжждите, я поработаю" и в итоге ваша лаконичная и красивая программа превращается в неизвестно что с точки зрения инструкций процессора. Поэтому на Си/С++ писали, пишут и будут писать столько сколько существует плюс/минус текущая архитектура процессоров(не важно АРМ или х86, или Риск ) все они плюс минус похожи и при определенной сноровке и понимания процесса можно глядя на Си/С++ код понять в какой набор инструкций он будет разворачиваться. По сути Си/С++ это более человеческий способ писать на ассемблере.
Ответить | Правка | Наверх | Cообщить модератору

229. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Илья (??), 01-Янв-26, 07:32 
>Может быть С# или Go или Пистон

Питон да, отвратителен во всех смыслах.

Весь рантайм у С# - сборщик мусора. Это около 1000 строк кода.

Если не пишешь под микросхемы - c# экономит человекомесяцы разработки в год.

Ответить | Правка | Наверх | Cообщить модератору

239. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Rezzet (??), 01-Янв-26, 13:53 
> Если не пишешь под микросхемы - c# экономит человекомесяцы разработки в год.

Нет, не экономит, нет рантайм это не только сборщик мусора. В языках программирования нет серебряной пули, есть более подходящие под конкретную задачу, есть менее подходящие. Для библиотек типа curl С# не подходящий язык, потому что тащит рантайм и виртуальную машину.


Ответить | Правка | Наверх | Cообщить модератору

264. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (264), 01-Янв-26, 19:13 
Эстетичность/лаконичность и что там под капотом - вещи ортогональные.
Ответить | Правка | К родителю #218 | Наверх | Cообщить модератору

13. "Проект Curl избавился от использования функции strcpy в коде"  –3 +/
Сообщение от xPhoenix (ok), 31-Дек-25, 11:05 
Рано или поздно и curl на Rust перепишут.
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

15. "Проект Curl избавился от использования функции strcpy в коде"  +3 +/
Сообщение от Ilnarildarovuchemail (?), 31-Дек-25, 11:12 
И это будет отвратительно
Ответить | Правка | Наверх | Cообщить модератору

17. "Проект Curl избавился от использования функции strcpy в коде"  +11 +/
Сообщение от Аноним (17), 31-Дек-25, 11:21 
Уточнение:

Начнут переписывать.

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

30. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (30), 31-Дек-25, 11:58 
Уточнение:

второй раз

Ответить | Правка | Наверх | Cообщить модератору

44. "Проект Curl избавился от использования функции strcpy в коде"  +5 +/
Сообщение от Аноним (44), 31-Дек-25, 12:44 
Его и первый раз не начали, там растеры сделали какой-то минимальный бекенд и забросили, думая что Даниэль будет сам поддерживать его. А он не стал и просто выбросили его - https://daniel.haxx.se/blog/2024/12/21/dropping-hyper/
Ответить | Правка | Наверх | Cообщить модератору

75. "Проект Curl избавился от использования функции strcpy в коде"  –2 +/
Сообщение от morphe (?), 31-Дек-25, 14:05 
Он же прямо говорит что вместе с теми кто этот бекенд и добавил решили что оно не нужно, функциональность слишком сильно дублирует то что в curl уже есть, не давая особых преимуществ, но при этом усложняя сборку

Всем желающим заменить curl на Rust - hyper имеет своё сишное апи, без лишней прослойки в форме api curl: https://docs.rs/hyper/latest/hyper/ffi/index.html

Ответить | Правка | Наверх | Cообщить модератору

21. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от aname (ok), 31-Дек-25, 11:36 
Ох уж эти тысячи глаз
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

48. "Проект Curl избавился от использования функции strcpy в коде"  –4 +/
Сообщение от zionist (ok), 31-Дек-25, 13:05 
Если уже и переписывать, то на Go. Потому что использование системного языка для простой утилиты выглядит как из пушки по воробьям.
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

52. "Проект Curl избавился от использования функции strcpy в коде"  +4 +/
Сообщение от Аноним (44), 31-Дек-25, 13:22 
Curl это библиотека - libcurl, а не утилита. С ней линкуется софт, если нужен http/ftp/smtp/pop3/ldap/ssh протоколы. Так что не катит тут твой гоу с его GC, рантаймом и непонятным API.
Ответить | Правка | Наверх | Cообщить модератору

79. "Проект Curl избавился от использования функции strcpy в коде"  –2 +/
Сообщение от zionist (ok), 31-Дек-25, 14:09 
Всегда использовали лишь как утилиту. А какой именно софт с libcurl линкуется?
Ответить | Правка | Наверх | Cообщить модератору

90. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (30), 31-Дек-25, 14:27 
запчасти системд, например
Ответить | Правка | Наверх | Cообщить модератору

106. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (44), 31-Дек-25, 14:53 
1. Мой софт, в котором мне надо по HTTPS коннектиться к вебсерверу
2. git clone https://, git push
3. И примерно еще миллион "софтов"
Ответить | Правка | К родителю #79 | Наверх | Cообщить модератору

115. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Gemorroj (ok), 31-Дек-25, 15:10 
php, например.
Ответить | Правка | К родителю #79 | Наверх | Cообщить модератору

217. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Rezzet (??), 01-Янв-26, 02:01 
Да почти весь который использует сеть, libcurl это единственный внятный способ получить http в программе или библиотеке.
Ответить | Правка | К родителю #79 | Наверх | Cообщить модератору

228. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от чтд (?), 01-Янв-26, 07:25 
внезапно тот же ржавый.
Ответить | Правка | К родителю #79 | Наверх | Cообщить модератору

88. "Проект Curl избавился от использования функции strcpy в коде"  –2 +/
Сообщение от Аноним (94), 31-Дек-25, 14:25 
>Потому что использование системного языка для простой утилиты выглядит как из пушки по воробьям.

OK, тогда на Python.

Ответить | Правка | К родителю #48 | Наверх | Cообщить модератору

86. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (94), 31-Дек-25, 14:20 
Начнут переписывать.
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

155. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от анонимус (??), 31-Дек-25, 18:28 
Не перепишут. Ведь ты не в курсе, что количество поддерживаемых архитектур на которых работае curl раз в 5 больше, чем их поддерживает Rust.
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

136. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (136), 31-Дек-25, 16:33 
Кресты нужно закопать, за время компиляции.
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

181. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (183), 31-Дек-25, 22:24 
Но языке без метапрограммирования уже никто всерьёз не воспринимает.
Ответить | Правка | Наверх | Cообщить модератору

184. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 31-Дек-25, 22:37 
> за время компиляции

Проблемы генто-прдликов?
Нормальные люди не пересобирают софт для каждого пользователя, это просто неэффективна трата электричества. Нормальные люди собирают софт один раз и им пользуются сотни или миллионы.
А раз так, то скорость компиляции не важна - главное что может сделать компилятор за это время.

Ответить | Правка | К родителю #136 | Наверх | Cообщить модератору

220. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (136), 01-Янв-26, 02:41 
>Нормальные люди не пересобирают софт для каждого пользователя

А ловко вы программистам в ненормальных записал.
>Нормальные люди собирают софт один раз и им пользуются сотни или миллионы.

Про bisect вы, как я понимаю, тоже не слышали.
>главное что может сделать компилятор за это время.

Компилятор просто сжигает время впустую
https://www.opennet.me/opennews/art.shtml?num=56449 Опубликован набор патчей, ускоряющих сборку ядра Linux на 50-80%

Ответить | Правка | Наверх | Cообщить модератору

144. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от senaemail (ok), 31-Дек-25, 17:27 
С++, к сожалению, тоже полностью не избавился строк с нулевым терминатором.

А по-хорошему надо бы начать с libc.

Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

230. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (-), 01-Янв-26, 08:26 
Что за дурость критиковать нуль-терминированность. Чем предлагаешь помечать конец строки? Своим помётом?
Ответить | Правка | Наверх | Cообщить модератору

231. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от warlockemail (??), 01-Янв-26, 10:22 
А зачем вообще помечать конец строки?
Ответить | Правка | Наверх | Cообщить модератору

232. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Сказочный (?), 01-Янв-26, 11:10 
Или так, или явно указывать ее размер, но тогда это уже будет не просто строка. Как иначе узнать что строка закончилась и надо прекратить читать память?
Ответить | Правка | Наверх | Cообщить модератору

233. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от warlockemail (??), 01-Янв-26, 11:33 
Что значит "не просто строка"? Как раз обычная, нормальная строка, состоящая из указателя и длины. А вот нуль-терминированные строки -- это совсем не просто строки.

Ответить | Правка | Наверх | Cообщить модератору

4. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от Аноним (4), 31-Дек-25, 10:26 
Где бенчмарки?
Ответить | Правка | Наверх | Cообщить модератору

5. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Tron is Whistling (?), 31-Дек-25, 10:27 
Ну вот да, если нет managed строк - явная передача размеров буферов - лучшее решение.
Ответить | Правка | Наверх | Cообщить модератору

91. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (94), 31-Дек-25, 14:28 
Обязательно null terminated строки тоже можно считать managed.
Ответить | Правка | Наверх | Cообщить модератору

6. "Проект Curl избавился от использования функции strcpy в коде"  +7 +/
Сообщение от kravich (ok), 31-Дек-25, 10:31 
>Кроме того, прекращение использования strcpy позволит избавиться от потока ложных сообщений об уязвимостях из-за некорректных срабатываний AI-инструментов, считающих наличие strcpy() уязвимостью без учёта имеющихся в коде проверок.

Это какой-то.... позор?

Ответить | Правка | Наверх | Cообщить модератору

7. "Проект Curl избавился от использования функции strcpy в коде"  +8 +/
Сообщение от Tron is Whistling (?), 31-Дек-25, 10:39 
Что да, то да. Когда термометр на мороженой рыбе показывает +50 - стоит выкинуть термометр.
Ответить | Правка | Наверх | Cообщить модератору

93. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (94), 31-Дек-25, 14:30 
После выкидывания выяснится, что термометр показывал в Кельвинах.
Ответить | Правка | Наверх | Cообщить модератору

112. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Tron is Whistling (?), 31-Дек-25, 15:06 
> После выкидывания выяснится, что термометр показывал в Кельвинах.

Не, 50 по Кельвину на мороженой рыбе - это слишком мороженая рыба.
А в Фаренгейтах тоже уже не мороженая, и можно выкидывать.
Короче говоря если термометр кажет в шумах океана Марса - ему пора на покой.

Ответить | Правка | Наверх | Cообщить модератору

22. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от aname (ok), 31-Дек-25, 11:37 
С другой стороны, заявляется, что качество кода улучшено.
Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

92. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (89), 31-Дек-25, 14:29 
> Это какой-то.... позор?

Это ИИ-инструменты.

Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

121. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от RM (ok), 31-Дек-25, 15:37 
> Это какой-то.... позор?

это когда заманался сц...ь против ветра.
что характерно - ветер искусственно создается кучей .удаков, которым главное красивый дашборд в тупом автоматизированом (сейчас с AI, так модно) scanning tool.
ну что бы этим редискам уже совсем нихчего не делать, только требовать от всех вокруг внимания к тикетам с выхлопом сканера. Например написать обоснование почему сканер ошибся. Даже дружелюбно, без явного давления, признавая что сканер не идеален, но ведь "очень полезен для бизнеса".
Только эта вср#&*я система, как и ее хозяева, не имеет памяти, и шлет тот же самый репорт каждый раз, несмотря на то, что его уже описали и доказали в прошлый раз.
Да, и однотипная ошибка, но в другой строке - это отписаться нада атдельно, "ну чо тебе, жалко copy/paste сделать если то же самое".
А поскольку с этой стороны человек, а с той - тупой автомат - результат в новости.

Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

10. "Проект Curl избавился от использования функции strcpy в коде"  +5 +/
Сообщение от онанист (?), 31-Дек-25, 10:53 
из-за некорректных срабатываний AI-инструментов, считающих наличие strcpy() уязвимостью


очередная победа "безопасности" над здравым смыслом.
осталось ещё отключить интернет.

Ответить | Правка | Наверх | Cообщить модератору

24. "Проект Curl избавился от использования функции strcpy в коде"  +3 +/
Сообщение от Аноним (24), 31-Дек-25, 11:41 
"False positives" существовали всегда, если "эксперты по безопасности", проверяющие код AI-инструментами, об этом не в курсе, то это вопрос квалификации таких "экспертов". (Это, конечно же, не отменяет того факта, что AI в его нынешнем состоянии - срущий под себя младенец, пригодный только для выкачивания денег из инвесторов)
Ответить | Правка | Наверх | Cообщить модератору

12. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Фонтимос (?), 31-Дек-25, 11:00 
>автор утилиты ..., объявил о

Очевидно, что если Данила еще немного подумает, то придет к единственно верному решению - переписать вообще на другом актуальном языке.

Ответить | Правка | Наверх | Cообщить модератору

14. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от An (??), 31-Дек-25, 11:09 
Зря вы так. C тут то, что доктор прописал. На python слишком медленно будет.
Ответить | Правка | Наверх | Cообщить модератору

40. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Фонтимос (?), 31-Дек-25, 12:41 
Ну, питон как-бы популярный, но думаю, сейчас уже не актуальный.
Ответить | Правка | Наверх | Cообщить модератору

68. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (56), 31-Дек-25, 13:50 
> Ну, питон как-бы популярный

и самое главное - в количестве пробелов не ошибиться.

Ответить | Правка | Наверх | Cообщить модератору

180. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (183), 31-Дек-25, 22:20 
А не ставьте их слишком много на один блок кода - не ошибётесь. Например, два, всегда легко посчитать.
Ответить | Правка | Наверх | Cообщить модератору

23. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от aname (ok), 31-Дек-25, 11:39 
Не совсем понятно, зачем ему что- то переписывать на C#
Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

41. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Фонтимос (?), 31-Дек-25, 12:42 
Да, не, это не слишком актуально сейчас
Ответить | Правка | Наверх | Cообщить модератору

162. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от aname (ok), 31-Дек-25, 19:34 
> Да, не, это не слишком актуально сейчас

Очень даже актуально

Ответить | Правка | Наверх | Cообщить модератору

33. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 31-Дек-25, 12:20 
Он уже пытался, но неосилил выносить нытье любителей некроплатформ.
Так что пусть хлебает щии(т) полной ложкой и выдумывает костыли для подпорки проекта.
Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

43. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Фонтимос (?), 31-Дек-25, 12:43 
Бог любит троицу, так-что еще не все потеряно
Ответить | Правка | Наверх | Cообщить модератору

19. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (-), 31-Дек-25, 11:31 
> Применение strncpy() создавало опасность возникновения ошибок из-за
> пропуска нулевого символа в конце строки или добавочного заполнения
> нулями.

Шикарный йазычог с офигенно продуманной стандартной либой :)
Прям все сделано для людей.

> Замена strcpy() на curlx_strcopy() произведена, так как существует
> вероятность человеческой ошибки, приводящей к разделению кода с
> проверкой/выделением памяти и вызовом strcpy(), например, при
> необдуманном переносе лишь части кода или вставки кода между проверкой
> и вызовом strcpy()

Хехе, classic.
Что забавно, даже новая curlx_strcopy не возвращает ошибку, если размеры не подходящие, а молча копирует нулевой символ.

Ответить | Правка | Наверх | Cообщить модератору

26. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от Аноним (26), 31-Дек-25, 11:49 
> Хехе, classic.

в топку любые функции в стд, которые используют внутри себя другие функции. Эти функции фактически обертки над memset, пусть эти обертки пишет сам программист под свои задачи, по факту если это функция в стандартной библиотеке, то по существу там все входные параметры должны быть проверены на корректность, и указатели и длины, а тут что? - одни предположения. Мракобесие!

Ответить | Правка | Наверх | Cообщить модератору

27. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (26), 31-Дек-25, 11:50 
правка: memcpy, неважно, суть в общем ясна.
Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

28. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (28), 31-Дек-25, 11:51 
> Шикарный йазычог с офигенно продуманной стандартной либой :)

Никто не мешает использовать более безопасные инструкции, вместо устаревших. Microsoft ещё в ранних Visual Studio сделала, чтобы компилятор ругался. Ты что ли не стареешь, офигенный продуман.

Ответить | Правка | К родителю #19 | Наверх | Cообщить модератору

72. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от Аноним (56), 31-Дек-25, 13:57 
> Microsoft ещё в ранних Visual Studio сделала, чтобы компилятор ругался.

Он бы ругался, когда во все проекты телеметрию добавляет.

Ответить | Правка | Наверх | Cообщить модератору

25. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (24), 31-Дек-25, 11:47 
Для исключения уязвимостей в коде на Си достаточно средств, предоставляемых самим Си? Ай, беда-трагедия, как же тогда прогресс двигать, если можно без модных язычков обходиться?
Ответить | Правка | Наверх | Cообщить модератору

167. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от PROgrm_JARvis (ok), 31-Дек-25, 20:32 
Настолько достаточно, что оно требует своего per-project велосипеда, делает рантайм-проверку (а в релизных билдах и на неё забивает), и требует не забывать за собой таскать длину отдельной перменной которую ну разумеется нельзя перепутать (нет)
Ответить | Правка | Наверх | Cообщить модератору

253. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (24), 01-Янв-26, 16:40 
> требует не забывать

Программирование вообще "требует не забывать".
Топтание клавиатуры с выключенной головой программированием  не является.

Ответить | Правка | Наверх | Cообщить модератору

29. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (29), 31-Дек-25, 11:53 
А поцаны, писавшие всю жизнь на паскале и использовавшие для этого string, даже и не знали об этой проблеме. А кто то все еще думает, что паскаль с его строгой типизацией - плохой язык.
Ответить | Правка | Наверх | Cообщить модератору

32. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от warlockemail (??), 31-Дек-25, 12:13 
string — это который не может быть длиннее 255 символов?
Ответить | Правка | Наверх | Cообщить модератору

36. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 31-Дек-25, 12:27 
Ты что паскаль последний раз видел когда Ельцин был президентом)?
String is an alias for ShortString, AnsiString or Unicodestring (UTF16) depending on a compiler setting.

Т.е оно не просто поддерживает длинные строки, но еще и Unicode.
Чего дырявым ЯП даже не снилось.

Ответить | Правка | Наверх | Cообщить модератору

38. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (26), 31-Дек-25, 12:39 
> Ты что

Надо начинать сначала с понятий bounded и unbounded string, потом уже ShortString, AnsiString or Unicodestring (UTF16) :)

Ответить | Правка | Наверх | Cообщить модератору

54. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (44), 31-Дек-25, 13:26 
> Чего дырявым ЯП даже не снилось.

Ты что Сишку видел когда еще Горбачёв был президентом СССР? В Си строки вообще никогда не были ограничены по длинне, и так же 100 лет умеют в юникод.

Ответить | Правка | К родителю #36 | Наверх | Cообщить модератору

69. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от Аноним (-), 31-Дек-25, 13:52 
> В Си строки

А в СИ есть строки? Вот это новость!!!
Специально открыл стандарт, но там никакого string data type нету.
В string.h какие-то недофункции для работы с чарами.

> вообще никогда не были ограничены по длинне,

Конечно не ограничены.
Ни по длинне, ни по буферу. Главное не забывать про нуль-терминатор, иначе будет бо-бо.

> и так же 100 лет умеют в юникод.

Настолько, что росчитать длину строки в символах для UTF-8 уже проблема.


Ответить | Правка | Наверх | Cообщить модератору

74. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (44), 31-Дек-25, 14:05 
> А в СИ есть строки? Вот это новость!!!

Ну это же вы начали первый. Я вам подыграл немного. Да, в Си нет никаких строк, как и в ассемблере. В асме "строки" это просто массив байт, ровно как и в Си.

> Настолько, что росчитать длину строки в символах для UTF-8 уже проблема.

И какая тут проблема у вас?

Ответить | Правка | Наверх | Cообщить модератору

81. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от morphe (?), 31-Дек-25, 14:10 
> И какая тут проблема у вас?

С utf-16 при конвертации в utf-8 нужно заново по строке итерироваться и пересчитывать всё, потому что 2-4 байта в utf-16 это от 1 до 5 байт в utf-8

Вычисления не бесплатные, и требуются во всех программах что взаимодействуют с реальным миром, где в utf-16 данные не хранит никто

Ответить | Правка | Наверх | Cообщить модератору

96. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от fi (ok), 31-Дек-25, 14:36 
А вот не надо "С utf-16 при конвертации в utf-8" делать, что за детские ошибки?

есть транспортное представление и внутреннее для строки, так что конвертируем utf* <=> wchar_t (32bits), с ним и работаем. Кстати, 6 уровень сетевой модели ISO.

PS utf-16 - вообще не должен был появиться "16-бит хватит для всех, 640kb ... " :DDDDDDDDDD

Ответить | Правка | Наверх | Cообщить модератору

103. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от morphe (?), 31-Дек-25, 14:45 
> wchar_t (32bits), с ним и работаем

Зачем тебе со строкой работать как с массивом wchar_t? Какой в этом смысл?

Ответить | Правка | Наверх | Cообщить модератору

83. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (-), 31-Дек-25, 14:13 
> В асме "строки" это просто массив байт, ровно как и в Си.

Да, потому сишка это просто переносимый супермакроассемблер созданный для портирования юниксов на следующую PDP. Вопрос зачем писать на этом недоязыке в 2025 остается открытым

> И какая тут проблема у вас?

Проблема что нужно не только бегать до конца строки в поисках заветного \n как для подсчета размера в байтах, а еще и проверять является ли последовательность байтов валидным UTF-character и подсчитывать именно их. А что делать если не валидная?)

И так каждый раз, вместо того, чтобы один раз посчитать при создании и валидации и потом просто использовать это значение.

Ответить | Правка | К родителю #74 | Наверх | Cообщить модератору

153. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от warlockemail (??), 31-Дек-25, 18:28 
Если вам зачем-то нужно знать длину строки в кодепойнтах, это очень сильный маркер, что вы что-то делаете неправильно. Это универсальное правило применимое как к UTF-8 так и к UTF-16.
Ответить | Правка | Наверх | Cообщить модератору

98. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (89), 31-Дек-25, 14:37 
> в Си нет никаких строк, как и в ассемблере. В асме "строки" это просто массив байт, ровно как и в Си.

Как в си-строке, т.е. си-массиве, внутри строки сделать символ 0? Что будет выдавать функция "длина строки"?

Ответить | Правка | К родителю #74 | Наверх | Cообщить модератору

110. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (44), 31-Дек-25, 14:58 
Я не понимаю нафига ты тут кривляешься - вставляешь в середину 0 и всё, strlen() выдаст кол-во байт до этого 0 в середине. А как должно быть? До последнего 0? А где он этот последний, в самом конце виртуального адресного пространства процесса?

struct string {
   char *data;
   size_t len;
};

Храни длину в len, для копирования используй memcpy().

Ответить | Правка | Наверх | Cообщить модератору

131. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (-), 31-Дек-25, 16:13 
> strlen() выдаст кол-во байт до этого 0 в середине.

Прям генитальное решение от дидов))

> Храни длину в len, для копирования используй memcpy().

Т.е. вы предлагаете не использовать все функции с префиксом str из string.h?
По причине того, что string совсем не string, а не понятно что и не выполняет своей функции?))
Не зря сишные строки называют "the most expensive one-byte mistake"

Ответить | Правка | Наверх | Cообщить модератору

95. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (89), 31-Дек-25, 14:34 
> В Си строки вообще никогда не были ограничены по длинне

И сколько будет работать функция, определяющая длину строки, на строке в пару гектар?

Ответить | Правка | К родителю #54 | Наверх | Cообщить модератору

77. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от morphe (?), 31-Дек-25, 14:08 
> но еще и Unicode

Вот только utf16, как и все другие языки что добавили поддержку unicode непрозрачно, в 90х годах, а не нормальный utf8

Ответить | Правка | К родителю #36 | Наверх | Cообщить модератору

104. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (29), 31-Дек-25, 14:49 
Это в Delphi. В Lazarus UTF8. И я лично не понимаю линуксовую истерику по поводу UTF16. Вы должны понять одну простую вещь. UTF8 эффективен только если вы с US или GB и пишете на чистом английском. Как только вы начинаете использовать в строке региональные буковки - UTF16 становится в среднем более эффективным по памяти, чем UTF8.
Ответить | Правка | Наверх | Cообщить модератору

107. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от morphe (?), 31-Дек-25, 14:54 
> Как только вы начинаете использовать в строке региональные буковки - UTF16 становится в среднем более эффективным по памяти, чем UTF8.

Он становится в среднем более эффективным по памяти на строках которые состоят исключительно из арабского и китайского, при этом не любого

Русский и большинство других языков входящих в BMP кодируются как 2 байта на букву, т.е не менее эффективно чем utf16

Ответить | Правка | Наверх | Cообщить модератору

109. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от morphe (?), 31-Дек-25, 14:58 
> исключительно из арабского и китайского, при этом не любого

Кстати соврал, арабский входит в BMP

Эффективнее значит выходит только CJK, который в utf-8 кодируется в 3 байта против 2х в utf-16

...Однако это нивелируется тем что у тебя китайский текст обычно и английский содержит, всякие JSON/XML/HTML/прочие форматы

Ответить | Правка | Наверх | Cообщить модератору

152. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 31-Дек-25, 17:54 
> Как только вы начинаете использовать в строке региональные буковки - UTF16 становится в среднем более эффективным по памяти, чем UTF8.

Нетже. В русских локалях ты можешь видеть немало цифр, знаков препинания, пробелов и прочих символов из ASCII, которые в utf8 кодируются одним байтом. Кириллические кодируются двумя, но... Ты никогда не считал, какую долю символов русского текста составляют кириллические букафки?

При этом, даже в русской локали, ты можешь сделать ls -R /, и увидеть что большинство имён файлов в чистом ASCII.

Ответить | Правка | К родителю #104 | Наверх | Cообщить модератору

206. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от morphe (?), 31-Дек-25, 23:41 
> Кириллические кодируются двумя, но

Никакие но не нужны, потому что в utf16 это те же самые 2 байта)

Ответить | Правка | Наверх | Cообщить модератору

58. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (29), 31-Дек-25, 13:36 
Неа. Строки были динамические еще со времен TP. Причем за временем жизни следить компилятор. А всякие вот эти strблаблабла из Си - это что то из времен, когда выделять память динамически было слишком дорого, а потому или она выделялась на стеке (привет записывание за пределы буффера, бугага), или использовался некий статический буффер (привет thread-unsafe). Как давно это было?

А паскаль - эт ваще чудо. Открою большой и жирный секрет. Если заменить объекты на интерфейсы, а TObject на TInterfacedObject - можно вообще обойтись без деструкторов, ибо все время жизни будет отслеживаться компилятором. В Си/С++, насколько я знаю, так нельзя. Там надо все равно _AddRef и _Release ручками вызывать. И привет безопасная работа с памятью для криворуких программистов, которые не знают принципа матрешки - что создал, то надо удалить.

Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

128. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 31-Дек-25, 15:44 
Респект за TInterfacedObject!
Ответить | Правка | Наверх | Cообщить модератору

143. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (26), 31-Дек-25, 17:27 
> Неа. Строки были динамические еще со времен TP.

в ada bounded строки на стеке, unbounded в куче

Ответить | Правка | К родителю #58 | Наверх | Cообщить модератору

221. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от _ (??), 01-Янв-26, 03:53 
> А паскаль - эт ваще чудо.

Та - да! Правдо - мёртвое ... причем мертвое уже дольше чем ты этот шарик топчешь ... :)
fpc - неплох. Но вот не юзают жи :\

Ответить | Правка | К родителю #58 | Наверх | Cообщить модератору

235. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (235), 01-Янв-26, 12:35 
> fpc - неплох.

жуткий в плане изучения, много легаси и всякого полу объектного программирования, лучше сразу Аду изучать.

Ответить | Правка | Наверх | Cообщить модератору

63. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (29), 31-Дек-25, 13:40 
Да, на паскале можно писать почти как на скриптовом языке. Можно создать что то типа TList<TMyInterface>, добавлять туда что то без необходимости очищать это добро унылым кодом типа for I := 0 to FList.Count - 1 do FList[I].Free. И даже можно создавать, едрен батон, анонимные объекты, т.е. что то типа MyFunc(TMyObject.Create).
Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

35. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Tty4 (?), 31-Дек-25, 12:23 
Паскаль всегда был слишком понятным и эффективным. Если что-то написано - сразу понятно, бред или нет (академический, те физиков и ко, код очень часто бред, просто иногда работает, его в расчет не берём). Очень сложно пускать пыль в глаза, когда Вас легко вывести на чистую воду.
Поэтому Питон, Си, Раст нужны - мозг свой вынесешь, пока разберёшься, что не так работает.
Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

78. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (29), 31-Дек-25, 14:08 
Я сейчас пишу на C/C++. Да, я тормоз. Когда все писали на C, я писал на паскале. Когда все пишут на Rust, я пишу на C/C++. Ну что могу сказать. У C/C++ есть свои плюсы, но и свои минусы, типа невозможности присваивать массивы и необходимости кастовать enum в int. Но если я реально хочу быстро написать какую-то прогу без лишних заморочек и мозголомства - я все равно запускаю Lazarus.

У меня есть старый проект на 300к строк, где нет ни одной утечки памяти. А все почему? Потому, что хорошая дисциплина написания кода и волшебный FastMM, который умеет рапортовать ошибки памяти. В том числе и тихие хэап коррапшены, если перейти в фулл дебаг мод. Классно ведь, когда не только утечка памяти показывается, но еще и ГДЕ она происходит?

Ответить | Правка | Наверх | Cообщить модератору

97. "Проект Curl избавился от использования функции strcpy в коде"  –2 +/
Сообщение от Аноним (29), 31-Дек-25, 14:36 
АААААААААААААА. Ну кто-нибудь, скажите этим разработчикам Си, что они дебилы.

Почему с их точки зрения вот это не должно работать?

typedef uint8_t TMyArr[8];

TMyArr A, B;

A = B;

Или вот такой кусок говорит, что нельзя привести тип:

typedef struct {int X, Y;TMyArr A} TMyStruct;

TMyStruct C = {0, 0, A};

А если сделать вот такую замену, то должно?

typedef struct {uint8_t Foo[8]} TMyArr;

В чем логика? В паскале все работает и все логично.

Ответить | Правка | К родителю #35 | Наверх | Cообщить модератору

101. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (89), 31-Дек-25, 14:42 
Потому что паскаль сочинял Вирт, а си - будущие сишники.
Ответить | Правка | Наверх | Cообщить модератору

150. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (44), 31-Дек-25, 17:45 
Потому что ты прикинулся шлангом и сохраняешь массив в массив, используя их имена. А имя массива - это константный адрес, что ты тут ожидал получить?

Прикинь! Так тоже не работает:
int a, b;

&a = &b;

Ответить | Правка | К родителю #97 | Наверх | Cообщить модератору

138. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (136), 31-Дек-25, 16:34 
>А поцаны, писавшие всю жизнь на паскале

Это латентные сишники. Сырые указатели позволяют легко портить память, прямо как в си. Но поскольку это не так очевидно как в си, то пишущие на паскале даже не подумают о смене языка.

Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

151. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (44), 31-Дек-25, 17:52 
Софтом на паскале никто не пользуется и его исчезающе мало - поэтому никто про испорченную память там не знает.
Ответить | Правка | Наверх | Cообщить модератору

157. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (157), 31-Дек-25, 18:41 
Интересно, не знал что паскаль считается плохим языком. Спасибо за информацию. В таком случае лучше его не использовать? Какой язык посоветуете?
Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

222. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от _ (??), 01-Янв-26, 03:57 
High Valyrian эстэстффенно ...
Ответить | Правка | Наверх | Cообщить модератору

255. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (255), 01-Янв-26, 17:00 
> писавшие всю жизнь на паскале и использовавшие для этого string, даже и не знали об этой проблеме

Узнавали, когда хакеры в байты длины записывали свои числа. А после длины - свой произвольный выполняемый код.

Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

31. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от Аноним (31), 31-Дек-25, 11:58 
memccpy ему не понравилась? Занулять строку звучит как лютый костыль всё равно, лучше уж abort кидать чтобы баги быстрее пофиксить связанные с неправильным размером буфера.
Ответить | Правка | Наверх | Cообщить модератору

39. "Проект Curl избавился от использования функции strcpy в коде"  –5 +/
Сообщение от Tron is Whistling (?), 31-Дек-25, 12:41 
Шпасибо за идею, ребята, но таки не лучше. Пусть у меня лучше один запрос завалится с непонятным багом, чем всё приложение.
Ответить | Правка | Наверх | Cообщить модератору

51. "Проект Curl избавился от использования функции strcpy в коде"  +4 +/
Сообщение от Аноним (-), 31-Дек-25, 13:20 
> Пусть у меня лучше один запрос завалится с непонятным багом, чем всё приложение.

А если запрос НЕ завалится?
И просто будет удалённое выполнение кода как в Net-SNMP?

Будет лучше)?

Ответить | Правка | Наверх | Cообщить модератору

113. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Tron is Whistling (?), 31-Дек-25, 15:07 
Ну, смотря что вам приоритетнее.
Если у вас безопастный локалхост - наверное да, можно на пару недель и остановить.
Ответить | Правка | Наверх | Cообщить модератору

154. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от User (??), 31-Дек-25, 18:28 
Remote root то ли будет, то ли нет - можа и вовсе следующие 20 лет не найдут - а премия вот она, и хрен ты её с не работающим кодом получишь...
Выбор стула немножко очевиден, да?
Ответить | Правка | К родителю #51 | Наверх | Cообщить модератору

34. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Tron is Whistling (?), 31-Дек-25, 12:22 
Вот что криво в этой реализации - нет отработки варианта slen == dsize и src[slen - 1] == 0. Это вполне себе корректный вариант, который тупо пропущен.
Ответить | Правка | Наверх | Cообщить модератору

37. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 31-Дек-25, 12:35 
Не трогай! Это на новый год! (следущий)))

А вообще это норм, как для сишки.
По хорошему функция должна возвращать ошибку при неверных входных параметрах, но обработку ошибок еще не завезли, так что "и так сойдет"

Ответить | Правка | Наверх | Cообщить модератору

156. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от warlockemail (??), 31-Дек-25, 18:41 
Нет, это некорректный вариант. slen — это длина строки не включая 0.
Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

174. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Tron is Whistling (?), 31-Дек-25, 21:40 
Смотря что считать длиной, да.
На самом деле так делать тоже хреново, появляется лёгкая возможность off-by-one.
Ответить | Правка | Наверх | Cообщить модератору

175. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Tron is Whistling (?), 31-Дек-25, 21:42 
Если не включая 0 - тогда всё как бы, ну, будем считать, что ок.
Ассерт на месте, длина должна быть меньше длины буфера.
Ответить | Правка | К родителю #156 | Наверх | Cообщить модератору

42. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (-), 31-Дек-25, 12:43 
Охохо, опять strncpy.

Вот что она делает, судя по названию? Наверное копирует строку 🤔
Ан нет!
Она копирует не более n ненулевых байтов из источника и добивает буфер до n нулями (но зачем?), ломая инвариант - в буфере после копирования не строка.

Отличная функция для строковой библиотеки, чувствуется могучий дедовский дизайн - собрать столько бесполезной функциональности в одной функции.

Ответить | Правка | Наверх | Cообщить модератору

50. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от Аноним (71), 31-Дек-25, 13:14 
Ну и что теперь из-за каждого чтения привет мира нужно городить библиотеку на 10 мегабайт? Раньше операционные системы были меньше 10 мегабайт.
Ответить | Правка | Наверх | Cообщить модератору

223. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (136), 01-Янв-26, 04:58 
Раньше и компьютеров не было, а большинство людей были крестьянами. Не хотите вернуться?
Ответить | Правка | Наверх | Cообщить модератору

45. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (45), 31-Дек-25, 12:44 
>Теперь все вызовы strcpy() заменены на новую функцию curlx_strcopy

Какое же гнилое говно эта сишка, что в ней совсем-совсем в стандартной библиотеке вообще ничего юзабельного нет. Менталитет сишников такой же. Сейчас я задействовал одну либу, парсящую один формат, на сишке (от безысходности, на плюсах варианта нет) ... вроде бы превосходно документированную, но ... оказалось, что таки недостаточно документированную, там внутри malloc на mallocе, хотя это совсем не требуется, можно было просто указатель в буфер, которым владеет пользователь API, передать, без каких-либо аллокаций вообще, и то, что функция делает маллоки и что возвращаемые ей значения надо освобождать - это вообще никак недокументировано! А в другой функции есть баг прямо в API, из-за которого использование её функций сразу даёт повреждение кучи из-за путаницы в типах указателей (функция из одной строчки, но там непрозрачный указатель приводится не к тому типу, потому что разраб идиот, решил сэкономить, и внутри либы одну и ту же функцию задействовать для двух разных типов, при этом весь код касаемый другого типа не протестирован вообще, так как второй тип - это плюсовые биндинги, которые автор просто добавил без каких-либо тестов).

Ответить | Правка | Наверх | Cообщить модератору

53. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (26), 31-Дек-25, 13:22 
> от безысходности
> хотя это совсем не требуется, можно было просто указатель в буфер, которым владеет пользователь API, передать, ....

это что за такой синдром выученной беспомощности? Ну пишите сами тот самый парсер, в чем проблема?

> А в другой функции есть баг прямо в API

А у кактуса есть КОЛЮЧКИ! Подумаешь, главное ведь желудок забить, чтобы не урчало.

пс: короче, причем тут Си если описанное выше мракобесие не зависит от языка, а от "потому что разраб идиот", сами ведь утверждаете.

Ответить | Правка | Наверх | Cообщить модератору

108. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (45), 31-Дек-25, 14:57 
>сами ведь утверждаете.

Что-то как вижу проект на голой сишке - так обычно такой случай. Закономерность, не находите?

>это что за такой синдром выученной беспомощности? Ну пишите сами тот самый парсер, в чем проблема?

Так оригинальный разраб того проекта на плюсах, который я форкнул, ещё больший дятел. У него был свой парсер, написанный в худших традициях, со strcmp, да, в cpp-файле. Неудивительно, что он не работает нихрена, а в коде возле него висит ToDo: переписать. Больше 10 лет уже висит. Проект-то заброшен, но единственное мало-мальски рабочее на Qt, что есть в интернете - это это (за исключением говна от проекта Qt, которое тоже ущербное). Там вообще всё переписывать надо, но слона едят по кускам. План вообще все оригинальные исходники выкинуть, заменив на портированные с Андроидного приложения. Я вообще не ожидал, что андроидное приложение основано на таком гигантском количестве кода.

Ответить | Правка | Наверх | Cообщить модератору

67. "Проект Curl избавился от использования функции strcpy в коде"  +2 +/
Сообщение от Аноним (44), 31-Дек-25, 13:48 
>[оверквотинг удален]
> пользователь API, передать, без каких-либо аллокаций вообще, и то, что функция
> делает маллоки и что возвращаемые ей значения надо освобождать - это
> вообще никак недокументировано! А в другой функции есть баг прямо в
> API, из-за которого использование её функций сразу даёт повреждение кучи из-за
> путаницы в типах указателей (функция из одной строчки, но там непрозрачный
> указатель приводится не к тому типу, потому что разраб идиот, решил
> сэкономить, и внутри либы одну и ту же функцию задействовать для
> двух разных типов, при этом весь код касаемый другого типа не
> протестирован вообще, так как второй тип - это плюсовые биндинги, которые
> автор просто добавил без каких-либо тестов).

Начал поносить сишку, а закончил тем что "(от безысходности, на плюсах варианта нет)" - ну т.е. сам криворукий ничего не умеющий дятел, который ждёт что за него всё напишут.

Ответить | Правка | К родителю #45 | Наверх | Cообщить модератору

111. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (111), 31-Дек-25, 14:59 
См. рис. 1.
Ответить | Правка | Наверх | Cообщить модератору

47. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от zionist (ok), 31-Дек-25, 12:59 
> Решение является продолжением инициированного в прошлом году отказа от использования функции strncpy(), копирующей заданное число байт из входящей строки. Применение strncpy() создавало опасность возникновения ошибок из-за пропуска нулевого символа в конце строки или добавочного заполнения нулями.

Каким образом можно пропустить нулевой символ в конце строки и причём тут вообще добавочное заполнение нулями? Если оперировать Си строками без грязных хаков и собственных велосипедов, то нулевой символ никогда не исчезнит. Функция strcpy никогда не теряет нулевой символ. Если после нулевого символа есть дополнительные нулевые символы, это вообще не должно создавать никаких проблем. Если я не прав, приведите пример кода.

Ответить | Правка | Наверх | Cообщить модератору

64. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (56), 31-Дек-25, 13:41 
Надо же было гражданину отличиться. Отличился.
Ответить | Правка | Наверх | Cообщить модератору

76. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (-), 31-Дек-25, 14:06 
> Каким образом можно пропустить нулевой символ в конце строки

Элементарно. godbolt.org/z/znGerE5h6

int main() {
    char source[] = "Hello, World!";
    char destination[10];
    int copy_length = 10;
    strncpy(destination, source, copy_length);
    printf("Result %s", destination);
    return 0;
}

Program stdout: Hello, WorHello, World!
Итого - запоротый вывод из-за потерянного \n.
Потому что в сишечке строк нет, а есть убогие char*.

Ответить | Правка | К родителю #47 | Наверх | Cообщить модератору

114. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Tron is Whistling (?), 31-Дек-25, 15:09 
Из-за потерянного что? \0 может быть?
Достаточно было сделать destination[copy_length - 1] = 0, и всё.
Ответить | Правка | Наверх | Cообщить модератору

242. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (242), 01-Янв-26, 14:50 
То есть строку за один вызов функции скопировать нельзя, очень удобно, очень по-сишному.

А чтобы буфер нулями не забивался достаточно что сделать? Не использовать strncpy?

Ответить | Правка | Наверх | Cообщить модератору

116. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (116), 31-Дек-25, 15:13 
Функция конечно проблемная, но её проблемы можно обойти без особо сложной арифметики.
char* strncpy_safe(char* dst, char* src, int len) {
    dst[len-1] = '\0';
    return strncpy(dst, src, len-1);
}
#define strncpy(dst, src, len) (strncpy_safe(dst, src, len))
Вставьте эти 5 строк в начале файла и Ваш код заработает как должен.
То, что в Си нет строк это и минус и плюс. Ну какие могут быть строки при написании кода микроконтроллера или MBR? В винде вообще активно вместо null-terminated строк используется структура UNICODE_STRING { wchat_t* buff, ushort str_len, ushort buff_len } и им норм. Библиотека функций для Си вообще не обязана присутствовать. Она просто немного упрощает жизнь. Кстати, указания размера буфера отдельным числом, не является хорошей практикой. Завтра размер буфера станет 8 вместо 10, а copy_lenght так и останется 10.
Ответить | Правка | К родителю #76 | Наверх | Cообщить модератору

140. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 31-Дек-25, 16:50 
> Вставьте эти 5 строк в начале файла и Ваш код заработает как должен.

А если в len передать 0?
dst[len-1] = '\0' отработает все равно.

Но вот куда же он запишет этот ноль?
Он же закорраптит память.

> Ну какие могут быть строки при написании кода микроконтроллера или MBR?

Точно такие же как и в других ЯП.
Напр. на паскале можно писать для PIC (Pic Micro Pascal) и там есть STRING.
Строка это для программиста чтобы не прдлиться с вычислениями len, потому что этот len - неотъемлимый атрибут строки.

Ответить | Правка | Наверх | Cообщить модератору

244. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Tron is Whistling (?), 01-Янв-26, 15:07 
assert(len > 0) явно не хватает
ну и я бы таки не int, а таки unsigned int использовал
Ответить | Правка | К родителю #116 | Наверх | Cообщить модератору

245. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (116), 01-Янв-26, 15:17 
> ну и я бы таки не int, а таки unsigned int использовал

Ох, я даже не интересовался какие в точности типы у strncpy, там должен быть size_t, но компилятор и на int не жалуется, хотя стоило бы.

Ответить | Правка | Наверх | Cообщить модератору

256. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Tron is Whistling (?), 01-Янв-26, 17:01 
size_t там. Он беззнаковый.
Ответить | Правка | Наверх | Cообщить модератору

122. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (44), 31-Дек-25, 15:39 
> Потому что в сишечке строк нет, а есть убогие char*.

Хоспади, ну как же вы задолбали со своими строками. Какие-такие строки? Покажи мне строки в ассемблере! А еще в сишке нету звука и картинок - это всё просто байты, как и эти ваши строки.

Ответить | Правка | К родителю #76 | Наверх | Cообщить модератору

137. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (-), 31-Дек-25, 16:33 
> Какие-такие строки?

Файл называется string.h, а функции начинаются с префикса str.
Слово string сам перевести сможешь?

> Покажи мне строки в ассемблере!

Как же вы задолбали своим ассемблером!
Си это у нас ассемблер или "высокоуровневый язык программирования"?
Если ассемблер - то вопросов нет. Если ЯП, то почему в нем нет строк?)

Ответить | Правка | Наверх | Cообщить модератору

236. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (235), 01-Янв-26, 12:40 
> Си это у нас ассемблер или "высокоуровневый язык программирования"?

в том то и дело, что это банальная синтаксическая (макро) обертка над асм-ом.

Ответить | Правка | Наверх | Cообщить модератору

237. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (237), 01-Янв-26, 12:52 
>> Си это у нас ассемблер или "высокоуровневый язык программирования"?
> в том то и дело, что это банальная синтаксическая (макро) обертка над асм-ом.

Ваше мнение очень важно для нас.
Но давайте просто откроем книгу THE C PROGRAMMING LANGUAGE за авторством неких Брайана Кернигана и Денниса Ритчи [1].

И что мы там видим?
PREFACE
C is a general-purpose programming language which features economy
of expression, modern control flow and data structures, and a rich set of
operators. C is not a "very high level" language, nor a "big" one, and is
not specialized to any particular area of application. But its absence of res-
trictions and its generality make it more convenient and effective for many
tasks than supposedly more powerful languages.

От чего непонятно в словосочетании "general-purpose programming language" ?
Про ассемблер и обертки там тоже ничего нету.

[1] retrofun.pl/wp-content/uploads/sites/2/2023/12/1978-ritchie-the-c-programming-language.pdf

Ответить | Правка | Наверх | Cообщить модератору

246. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (235), 01-Янв-26, 15:38 
> И что мы там видим?

C is not a "very high level" language

Это что такое? Существующие макро ассемблеры такие же "general-purpose programming language" и в тоже время "is not a \"very high level\" language", не так ли? О чем это говорит?

> Про ассемблер и обертки там тоже ничего нету.

Естественно, надо же как-то обфусцировать понятие "программирование на асм", чтобы студенты не боялись - "асм это долго и нудно". Зато надо навязать, что компилятор умнее и лучше сгенерирует код, ага щас.

Ответить | Правка | Наверх | Cообщить модератору

254. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 01-Янв-26, 16:53 
> C is not a "very high level" language
> Это что такое? Существующие макро ассемблеры такие же "general-purpose programming language"

Чо? С каких пор ассемблеры стали "general-purpose programming language" ?
Они ж machine-specific и фиг ты его легко перенесешь с одной машины на другую.

> О чем это говорит?

О том что сишка не ассемблер))

>> Про ассемблер и обертки там тоже ничего нету.
> Естественно, надо же как-то обфусцировать понятие "программирование на асм", чтобы студенты не боялись - "асм это долго и нудно".

Какие студенты? СИ делался для портирования unix на новые архитектуры.

> Зато надо навязать, что компилятор умнее и лучше сгенерирует код, ага щас.

Именно так.


Ответить | Правка | Наверх | Cообщить модератору

259. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (235), 01-Янв-26, 17:18 
> Чо? С каких пор ассемблеры стали "general-purpose programming language" ?

А коды операций это не формальный язык? Или на асм нельзя запрограммировать какой-то алгоритм?

> О том что сишка не ассемблер))

Кек, обертка над асм, ибо асм генерируется Сишным компилятором.

> Какие студенты? СИ делался для портирования unix на новые архитектуры.

А что такое портирование? Разве не процесс оборачивания?

> Именно так.

рассмешили, коментом ниже оставил вот такой вопрос "Кто умнее растовый компилятор и Сишный ГЦЦ?"

Ответить | Правка | Наверх | Cообщить модератору

241. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (242), 01-Янв-26, 14:45 
Жаль что весь остальной мир об этом не знает, ни авторы языка, ни создатели оптимизирующих компиляторов, ни комитет по стандартизации.
Ответить | Правка | К родителю #236 | Наверх | Cообщить модератору

247. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (235), 01-Янв-26, 15:42 
> Жаль что

Для описания алгоритма мне не нужен ни один из ваших ЯП, а для имплементирования на железе - есть коды операций ЦПУ, а вы продолжайте жевать кактус. Долго и нудно? ну нормально ведь больше будете зарабатывать. Автоматизировать? Ну да под свои задачи только, универсального умного компилятора в помине не будет. Кто умнее растовый компилятор и Сишный ГЦЦ?

Ответить | Правка | Наверх | Cообщить модератору

147. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (147), 31-Дек-25, 17:34 
Просто кто-то гуманитариям неправильно объяснил что такое программирование. Пора уже привыкнуть
Ответить | Правка | К родителю #122 | Наверх | Cообщить модератору

224. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (136), 01-Янв-26, 05:01 
>Покажи мне строки в ассемблере!

Покажите мне современный софт на ассемблере, а не поддерлки типа колибри.
>А еще в сишке нету звука и картинок - это всё просто байты

Совершенно внезапно, но либо вы используете условные шейдеры, либо у вас тормозит даже условные 1080p.

Ответить | Правка | К родителю #122 | Наверх | Cообщить модератору

226. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (44), 01-Янв-26, 05:10 
> Покажите мне современный софт на ассемблере, а не поддерлки типа колибри.

Любой софт на C/C++ - компилируется в ассемблер, можешь на него посмотреть.

Ответить | Правка | Наверх | Cообщить модератору

258. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (255), 01-Янв-26, 17:11 
> Потому что в сишечке строк нет, а есть убогие char*.

Враньё.

Строка — это последовательность символов...
char (от англ. character — символ)...


Ответить | Правка | К родителю #76 | Наверх | Cообщить модератору

62. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (62), 31-Дек-25, 13:39 
Недавно смотрел код этой библиотеки. Код страшноват даже по меркам си. С модульностью как-то тоже не очень, один здоровый монолит. Даже не ясно, кто в здравом уме будет это поддерживать, если автор отойдёт от дел.
Ответить | Правка | Наверх | Cообщить модератору

70. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (71), 31-Дек-25, 13:53 
ИИ будет поддерживать.
Ответить | Правка | Наверх | Cообщить модератору

119. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от zionist (ok), 31-Дек-25, 15:23 
Адаптированный пример использования strncpy из второго издания K&R:

#include <stdlib.h>
#include <sys/dir.h> /* local directory structure */

#define NAME_MAX 14 /* longest filename component; */

/* system-dependent */
typedef struct { /* portable directory entry */
    long ino; /* inode number */
    char name[NAME_MAX+1]; /* name + '\0' terminator */
} Dirent;

typedef struct { /* minimal DIR: no buffering, etc. */
    int fd; /* file descriptor for the directory */
    Dirent d; /* the directory entry */
} DIR;

/* readdir: read directory entries in sequence */
Dirent *readdir(DIR *dp)
{
    struct direct dirbuf; /* local directory structure */
    static Dirent d; /* return: portable structure */

    while (read(dp->fd, (char *) &dirbuf, sizeof(dirbuf)) == sizeof(dirbuf)) {
        if (dirbuf.d_ino == 0) /* slot not in use */
            continue;
        d.ino = dirbuf.d_ino;
        strncpy(d.name, dirbuf.d_name, NAME_MAX);
        d.name[NAME_MAX] = '\0'; /* ensure termination */
        return &d;
    }
    return NULL;
}


Покритикуйте дедов. В чём они тут ошибались?

Ответить | Правка | Наверх | Cообщить модератору

163. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (163), 31-Дек-25, 19:37 
> Покритикуйте дедов. В чём они тут ошибались?

strncpy и все strn* вообще придуманы не для этого. С одной стороны, после них нужно добавлять нулевой символ, как в твоём листинге. Об этом легко забыть, это небезопасно. С другой стороны - char buffer[1024*1024]; strncpy(buffer, "x", sizeof(buffer)); запишет один мегабайт данных. Эти функции - для формирования записей в файлах (например, dBase), не для строк в приложениях. Кроме того, в листинге та же самая проблема, что и в новости. Если что-то не влезло - ты не знаешь, что оно обрезалось, и продолжаешь считать, что у тебя валидные данные. Сильно натянутый, но понятный пример: ты можешь случайно прочитать ".ssh/aaaa...aaaa" вместо ".ssh/aaaa...aaaa.pub".

Ответить | Правка | Наверх | Cообщить модератору

199. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от zionist (ok), 31-Дек-25, 23:34 
Будет ли исходная строка обрезана можно узнать заранее, просто сравнив её длину с третьим аргументов strncpy. Как правило такая ситуация означает ошибку и следовательно исключает саму необходимость вызывать strncpy или strcpy. Си строки заканчиваются нулевым символом и забывать об этом нельзя никогда. Соглашусь лишь в одном - функция strncpy предназначена для _полного_ заполнения результирующего буфера.

curlx_strcopy представляет из себя какую-то внутреннюю договорённость проекта curl, которая врядли подходит для общего использование. Достаточно взглянуть на неконсистентную обработку ситуации, когда условие slen < dsize не выполняется в дебаг и в релиз версиях.

Ответить | Правка | Наверх | Cообщить модератору

243. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (242), 01-Янв-26, 15:03 
Кек, просто проходимся по всей строке, считаем длину, проходимся по всей строке или до размера буфера еще раз для копирования, забиваем буфер до конца нулями (очень нужная операция!).

Ничем, кроме char'ов, конечно, читать/писать не можем, иначе UB.

Что там было про сишную производительность?

Если длину исходной строки знаем заранее, никакие убогие strncpy не нужны, можно memcpy вызвать.

Ответить | Правка | Наверх | Cообщить модератору

260. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (163), 01-Янв-26, 17:29 
> Будет ли исходная строка обрезана можно узнать заранее, просто сравнив её длину с третьим аргументов strncpy ... исключает саму необходимость вызывать strncpy или strcpy

Ты сам ответил. Если мы всё проверяем заранее, нам не нужна strXcpy вообще. В обеих ситуациях. Если буфера не хватает, мы это обрабатываем, а если всё ок, то у нас есть memcpy (длину-то мы уже знаем). Суть strcpy в том, чтобы проход по строке был один, и чтобы проверки выполняла сама функция, а не вызывающих код, где про них можно забыть.

Что касается curlx_strcopy, то у них при ошибке получается пустая строка. Пустая строка - это валидная строка. Однажды это в них выстрелит, можешь скринить.

Ответить | Правка | К родителю #199 | Наверх | Cообщить модератору

188. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от warlockemail (??), 31-Дек-25, 22:47 
Не по теме, но  в программе весьма типичная ошибка программ на C: возвращается указатель на локальную переменную.
Ответить | Правка | К родителю #119 | Наверх | Cообщить модератору

191. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от zionist (ok), 31-Дек-25, 22:56 
Нет никакой ошибки. Эта переменная статическая и указатель на неё возвращать можно.
Ответить | Правка | Наверх | Cообщить модератору

193. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от warlockemail (??), 31-Дек-25, 23:18 
Точно, проглядел. Мне позор, а автору оторвать руки за такой код.

Ответить | Правка | Наверх | Cообщить модератору

201. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от zionist (ok), 31-Дек-25, 23:36 
Его руки создали UNIX. Чем вам не угодили статические переменные?
Ответить | Правка | Наверх | Cообщить модератору

210. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от warlockemail (??), 01-Янв-26, 00:04 
У статических переменных много проблем. Теряется реентерабельность, multi-thread safety. Даже просто два вызова подряд уже проблема.
Ответить | Правка | Наверх | Cообщить модератору

211. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от zionist (ok), 01-Янв-26, 00:22 
Так вам и глобальные переменные не по душе? Статические переменные внутри функций - это те же глобальные переменные, но с ограниченной зоной видимости в коде.

Ответить | Правка | Наверх | Cообщить модератору

212. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от warlockemail (??), 01-Янв-26, 00:36 
Глобальные переменные хуже, так как могут ещё и неявную связь между разными функциями создавать. Статические переменные в любом виде, кроме констант и конструкций, эквивалентным константам, -- очень серьёзный антипаттерн, который не должен применяться по сути никогда (кроме тех редких случаев когда должен).
Ответить | Правка | Наверх | Cообщить модератору

240. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Сергейemail (??), 01-Янв-26, 14:06 
Ага. Именно поэтому в ядре линух их чуть больше чем дофига.
Ответить | Правка | Наверх | Cообщить модератору

263. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от warlockemail (??), 01-Янв-26, 19:03 
Да, Linux далеко не идеал кода.
Ответить | Правка | Наверх | Cообщить модератору

269. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (264), 01-Янв-26, 19:36 
Но там, ведь, из-за боязни переполнения стека.
Ответить | Правка | К родителю #240 | Наверх | Cообщить модератору

120. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Кошкажена (?), 31-Дек-25, 15:23 
Почему не сделать структуру строки с размером, например, как в Glib?
Ответить | Правка | Наверх | Cообщить модератору

123. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (44), 31-Дек-25, 15:41 
Потому что это библа, в которые данные приходят снаружи, где нет этих структур.
Ответить | Правка | Наверх | Cообщить модератору

124. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Кошкажена (?), 31-Дек-25, 15:42 
> Потому что это библа, в которые данные приходят снаружи, где нет этих
> структур.

Кто мешает обернуть char* в структуру и передать дальше по коду? Производительность упадет на 0.000000000001%?

Ответить | Правка | Наверх | Cообщить модератору

127. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (44), 31-Дек-25, 15:44 
Ну дак оборачивай и передавай. Только патч автору не забудь прислать, в котором все операции со строками внутри libcurl заменены на твою структуру.
Ответить | Правка | Наверх | Cообщить модератору

129. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Кошкажена (?), 31-Дек-25, 15:46 
> Ну дак оборачивай и передавай. Только патч автору не забудь прислать, в
> котором все операции со строками внутри libcurl заменены на твою структуру.

Ну то есть ничего не мешает, просто вместо нормального решения проблемы раз и навсегда ходят около и меняют таки весь код. Воистину лучше бы на С++ переписали.

Ответить | Правка | Наверх | Cообщить модератору

146. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (44), 31-Дек-25, 17:33 
Дело в том что внешний интерфейс должен оставаться стабильным. Как ты предлагаешь сделать своё решение, чтоб существующий софт продолжил работать, если кто-то решит обновить libcurl на версию с этой твоей структурой?
Ответить | Правка | Наверх | Cообщить модератору

176. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Кошкажена (?), 31-Дек-25, 21:44 
> Дело в том что внешний интерфейс должен оставаться стабильным. Как ты предлагаешь
> сделать своё решение, чтоб существующий софт продолжил работать, если кто-то решит
> обновить libcurl на версию с этой твоей структурой?

Обернуть внутри в структуру из вызова апи. Да хоть создать std::string из const char* и далее внутри std::string использовать.

Ответить | Правка | Наверх | Cообщить модератору

268. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (264), 01-Янв-26, 19:34 
libffi
Ответить | Правка | К родителю #146 | Наверх | Cообщить модератору

125. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Кошкажена (?), 31-Дек-25, 15:43 
> Потому что это библа, в которые данные приходят снаружи, где нет этих
> структур.

Или кто мешает отдать структуру наружу в апи + функцию создания? Все равно они зовут strlen

Ответить | Правка | К родителю #123 | Наверх | Cообщить модератору

200. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (26), 31-Дек-25, 23:35 
> Или кто мешает

Мешает - хитроопость, а кто завтра будет гранты выделять на допиливание и доведение до ума? - НИКТО, если оно будет качественным по определению. Понятие законченного и доведенного ПО в СПО - НЕТ!!! И это все не просто так, а как бекдоры вносить по необходимости? Вот для этого и нужна симуляция деятельности - одним словом, бардак!

Ответить | Правка | Наверх | Cообщить модератору

205. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Кошкажена (?), 31-Дек-25, 23:41 
>> Или кто мешает
> Мешает - хитроопость, а кто завтра будет гранты выделять на допиливание и
> доведение до ума? - НИКТО, если оно будет качественным по определению.

Им итак никто не выделает. Но оно уже качественное, раз работает в куче софта каждый день.

> Понятие законченного и доведенного ПО в СПО - НЕТ!!!

А в проприетарной разработке все законечено и доведено до ума? И не обновляется? И багов нет?

А как же новые безопасные языки, на которые писать просто и безопасно? Получается сразу себе гранты отрубают? Как же так?

Ответить | Правка | Наверх | Cообщить модератору

219. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (26), 01-Янв-26, 02:10 
> Им итак никто не выделает. Но оно уже качественное, раз работает в куче софта каждый день.

Критериев качества не вижу, если каждый день переписывают. Яп с недостандартом, куда там до критериев качества. Гамнокод одним словом, а все потому, что нет школы и культуры. Есть только недоучки хакиры и индусы.

> А в проприетарной разработке все законечено и доведено до ума? И не обновляется? И багов нет?

Ну смотря какой софт, если вы про мелкософт - то это те еще фраэра (картель, синдигат, мафия, триада - все в одном флаконе), им все равно какого качества у них продукт, главное конкурентов нет, но есть рычаги давления на любого фиииикающего и фуууукающего на их продукты, че там британцы плевались от их ЫЫ жопилот, а потом прикусили и купили.

> Получается сразу себе гранты отрубают? Как же так?

Наоборот, растовики уже плачут, что им столько кода переписывать надо, им уже и гранты подвезли, была ведь новость, мол оплачивать надо СПО на расте.

Ответить | Правка | Наверх | Cообщить модератору

225. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (136), 01-Янв-26, 05:02 
Ну вот возьми и сделай, в чём проблема?
Ответить | Правка | К родителю #120 | Наверх | Cообщить модератору

248. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Кошкажена (?), 01-Янв-26, 16:00 
> Ну вот возьми и сделай, в чём проблема?

Во-первых у меня лапки, во-вторых ты мне мешаешь.

Ответить | Правка | Наверх | Cообщить модератору

251. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (251), 01-Янв-26, 16:14 
Оно только трепать языком умеет.
Ответить | Правка | К родителю #225 | Наверх | Cообщить модератору

132. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Roman Dyabaemail (ok), 31-Дек-25, 16:19 
Во первых это void, во вторых это вообще всё бред сивой кобылы в лунную ночь !
Ответить | Правка | Наверх | Cообщить модератору

134. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Кошкажена (?), 31-Дек-25, 16:28 
В комментариях по ссылке он пишет почему возвращает void.
Ответить | Правка | Наверх | Cообщить модератору

139. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 31-Дек-25, 16:38 
> В комментариях по ссылке он пишет почему возвращает void.

| This function is meant to always work – like strcpy.

Это не ответ. Точнее это невероятно странное решение.
Функция всегда будет отрабатывать как-будто все ок, даже если это не ок.

| The idea is that this function is always used where it succeeds.
А что если нет? Вот что тогда? Очередная дырень в курле?)

| we catch that in testing/fuzzing – not in production.

Хехе, ну удачки)))

Ответить | Правка | Наверх | Cообщить модератору

177. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Кошкажена (?), 31-Дек-25, 21:45 
>> В комментариях по ссылке он пишет почему возвращает void.
> | This function is meant to always work – like strcpy.
> Это не ответ. Точнее это невероятно странное решение.

Ну там есть еще странные ответы

>> Isn’t this essentially strcpy_s() from Annex K (ISO C11)?
> I have no idea – it might be. I don’t study the C standards and we still use C89 in curl…

Ответить | Правка | Наверх | Cообщить модератору

185. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 31-Дек-25, 22:39 
> we still use C89 in curl…

Это как раз понятно.
Они гордятся, что курл собирается для некроплатформ и прочего электронного мусора.
А туда не то что С11 не завезли, а не факт что С99 есть.

Ответить | Правка | Наверх | Cообщить модератору

207. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Кошкажена (?), 31-Дек-25, 23:42 
>> we still use C89 in curl…
> Это как раз понятно.
> Они гордятся, что курл собирается для некроплатформ и прочего электронного мусора.

Это нормально.

Не вполне нормально не смотреть на новое и не делать выводы. Рано или поздно обновят минимально поддерживаемый стандарт.

Ответить | Правка | Наверх | Cообщить модератору

192. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от warlockemail (??), 31-Дек-25, 22:57 
Есть две сильно разных области применения программного обеспечения.

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

В другой области надо продолжать работать несмотря ни на что. Пусть на экране отобразится мусор, пусть откажет какая-то часть системы, но важно, чтобы система продолжала в целом работать и позволила пользователю хоть как-то, но решать какие-то задачи. При этом надо постараться минимизировать ущерб и влияние ошибки.

Тут очевидно применён способ работы с логическими ошибками из второй области. Насколько это оправдано, я не знаю.

Ответить | Правка | К родителю #139 | Наверх | Cообщить модератору

238. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Roman Dyabaemail (ok), 01-Янв-26, 12:55 
Теперь ты знаешь, почему в QNX RTP 6.0 постоянно отваливался модем !
Ответить | Правка | Наверх | Cообщить модератору

135. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (136), 31-Дек-25, 16:32 
Какой же хороший язык си.
>Кроме того, прекращение использования strcpy позволит избавиться от потока ложных сообщений об уязвимостях из-за некорректных срабатываний AI-инструментов

Вместо использования зависимых типов в итоге создан галлюцинирующий монстр.

Ответить | Правка | Наверх | Cообщить модератору

145. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 31-Дек-25, 17:29 
Многие люди никак не могут понять то, что в настоящем языке программирования вообще не должно быть строкового типа. И дело не в том, насколько низок этот язык. Для работы со строками должны быть отдельные, не входящие в язык функции, модули или процедуры.

Строковые типы оправданы только на некомпилируемых языках, языках которые работают на виртуальных машинах. Это такие языки как Python, Java, Perl.

Ответить | Правка | Наверх | Cообщить модератору

159. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Петр Турбо (?), 31-Дек-25, 19:07 
А я говорю все языки плохие потому что из коброки нету строк, точка!
Ответить | Правка | Наверх | Cообщить модератору

197. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (197), 31-Дек-25, 23:28 
В FreePascal и Delphi есть string и он там крутой.
Ответить | Правка | Наверх | Cообщить модератору

214. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (89), 01-Янв-26, 00:49 
И лучше пока никто не придумал, даже в плюсах.
Ответить | Правка | Наверх | Cообщить модератору

173. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Илья (??), 31-Дек-25, 21:35 
> в настоящем языке программирования вообще

В сишарпе есть тип String. Ни разу там не сталкивался с какими-либо проблемами

Ответить | Правка | К родителю #145 | Наверх | Cообщить модератору

195. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (196), 31-Дек-25, 23:26 
Вантузный Си-шарп некомпилируемый язык. Ему можно.
Ответить | Правка | Наверх | Cообщить модератору

267. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (264), 01-Янв-26, 19:32 
Вообще-то, компилируемый в байткод .NET-машины.
Ответить | Правка | Наверх | Cообщить модератору

160. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от aa (?), 31-Дек-25, 19:12 
будет ли он избавляться от strdup который питонисты принесли в стандарт С?
Ответить | Правка | Наверх | Cообщить модератору

189. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (189), 31-Дек-25, 22:53 
один питонист отметился :)
Ответить | Правка | Наверх | Cообщить модератору

161. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним (161), 31-Дек-25, 19:32 
остаётся carbon
Ответить | Правка | Наверх | Cообщить модератору

178. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Кошкажена (?), 31-Дек-25, 21:47 
> остаётся carbon

carbon не плох, но он для плюсовиков. К тому же давно о нем не слышно. Автор же сам по ссылкам в комментариях говорит, что ничего не хочеть учить

> I have no idea – it might be. I don’t study the C standards and we still use C89 in curl…

Ответить | Правка | Наверх | Cообщить модератору

190. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 31-Дек-25, 22:55 
Не, карбон пока не остается)

Авторы сами пишут
Existing modern languages already provide an excellent developer experience: Go, Swift, Kotlin, Rust, and many more.
Developers that can use one of these existing languages should.

Carbon Language is currently an experimental project.

Так что лет через 5 можно будет глянуть))

Ответить | Правка | К родителю #161 | Наверх | Cообщить модератору

166. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (166), 31-Дек-25, 20:24 
Когда говорят, что весь мир написан на Си - это повод ужаснуться. С такими проблемами ковыряться в 2025 это своё время не ценить.
Ответить | Правка | Наверх | Cообщить модератору

179. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Кошкажена (?), 31-Дек-25, 21:52 
> Когда говорят, что весь мир написан на Си - это повод ужаснуться.
> С такими проблемами ковыряться в 2025 это своё время не ценить.

Не ковряйся. Создавай новый мир с чудным unsafe и ковряйся в нем. Только вот в чем загвоздка? С момента создания прошло 15 лет, а нормальной библиотеки для ui нет. tauri - веб, gpui - доки нет, egui - нестабилен + после компиляции занимает 20+Гб c примерами-бинарниками по 500Мб на окно и 2 кнопки. Вот живи в таком мирке. В итоге биндинг в gtk или qt, которые как ты понимаешь далеки от идеала. А qt как работал 20 лет назад, так и работает как часики. Буквально можно открыть книжку по qt 4, прочитать и перейти на 6. Кроме qml все также примерно, все стабильно.

Ответить | Правка | Наверх | Cообщить модератору

186. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (-), 31-Дек-25, 22:43 
> А qt как работал 20 лет назад, так и работает как часики.

Qt это С++, а не Си.
За си вам к GовноTK. И работает оно совсем не как часики.

> Буквально можно открыть книжку по qt 4, прочитать и перейти на 6.

Ахахаха! Серьезно?)) Ну-ну)
Помню сколько попоболи было при переходе с 4 на 5, а потом с 5 на 6.

Ответить | Правка | Наверх | Cообщить модератору

208. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Кошкажена (?), 31-Дек-25, 23:50 
>> А qt как работал 20 лет назад, так и работает как часики.
> Qt это С++, а не Си.
> За си вам к GовноTK. И работает оно совсем не как часики.

Не правда. Нормально он работает, особенно в версии 2. На нем полно софта написано.

>> Буквально можно открыть книжку по qt 4, прочитать и перейти на 6.
> Ахахаха! Серьезно?)) Ну-ну)

Да, серьезно (с).

> Помню сколько попоболи было при переходе с 4 на 5, а потом с 5 на 6.

Каких? Между qt 4 и 5 основными изменениями были в QtGraphics и добавление QML. База (QObject, сигналы-слоы, виджеты, QtCore) там одна c минимальными изменениями, что в 4, что в 5, что в 6.

Ответить | Правка | Наверх | Cообщить модератору

209. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Кошкажена (?), 31-Дек-25, 23:54 
>> Буквально можно открыть книжку по qt 4, прочитать и перейти на 6.
> Ахахаха! Серьезно?)) Ну-ну)
> Помню сколько попоболи было при переходе с 4 на 5

Даже официальная документация https://wiki.qt.io/Transition_from_Qt_4.x_to_Qt5 пишет

> The transition from Qt 4.x to Qt 5 is not expected to be significant. However, the "modularization" of the Qt code base requires some amount of changes to project configuration, such as use of "headers", and configuration of project build settings (such as changes to the *.pro files).

Ответить | Правка | К родителю #186 | Наверх | Cообщить модератору

266. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (264), 01-Янв-26, 19:29 
При переходе с 4 на 5 болей не было. Была боль при переходе с KDE 3 на KDE 4, но там по причине перевода инфраструктуры на Plasma.
Ответить | Правка | К родителю #186 | Наверх | Cообщить модератору

215. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Аноним (215), 01-Янв-26, 01:20 
> Создавай новый мир с чудным unsafe и ковряйся в нем

Для работы со строками unsafe не нужен. Это какая-то адская е-нина в Си.

Ответить | Правка | К родителю #179 | Наверх | Cообщить модератору

262. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (147), 01-Янв-26, 18:55 
Ну если забить весь стек копиями строки то не нужно действительно
Ответить | Правка | Наверх | Cообщить модератору

227. "Проект Curl избавился от использования функции strcpy в коде"  +1 +/
Сообщение от Аноним12345 (?), 01-Янв-26, 05:24 
и это сломають
Ответить | Правка | Наверх | Cообщить модератору

250. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (251), 01-Янв-26, 16:07 
Да, найдутся ещё более "необдуманные".
Ответить | Правка | Наверх | Cообщить модератору

234. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от anonymous (??), 01-Янв-26, 12:02 
переоткрывают плюсы. каждому классу - свои методы.
Ответить | Правка | Наверх | Cообщить модератору

257. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (-), 01-Янв-26, 17:10 
Си не ООП язык и не стремится быть таковым. Автор написал свою версию функции. Нет тут ни классов, ни методов.
Ответить | Правка | Наверх | Cообщить модератору

265. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (264), 01-Янв-26, 19:24 
А перешёл бы на C++, не пришлось бы велосипедить со строками. Это не ядро, здесь Торвальдс ему не запретит.
Ответить | Правка | Наверх | Cообщить модератору

249. "Проект Curl избавился от использования функции strcpy в коде"  +/
Сообщение от Аноним (251), 01-Янв-26, 16:06 
> например, при необдуманном переносе лишь части кода или вставки кода между проверкой и вызовом strcpy()

Т.е. для удобства вайб-кодинга, да?

Давайте добавлять ещё больше костылей для "необдуманных" - и этих необдуманных станет еще больше.

Ответить | Правка | Наверх | Cообщить модератору

261. "Проект Curl избавился от использования функции strcpy в коде"  –1 +/
Сообщение от Стакан Васяныч (-), 01-Янв-26, 17:35 
Опять переписывание ради переписывания (а по факту усложнение ради усложнения). Практическая обоснованность данного решения стремится к нулю.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру