- 1
- 2
- 3
- 4
// Read option name (can contain spaces)
while (is >> token && token != "value")
- name += string(" ", name.empty() ? 0 : 1) + token;
+ name += (name.empty() ? "" : " ") + token;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
// Read option name (can contain spaces)
while (is >> token && token != "value")
- name += string(" ", name.empty() ? 0 : 1) + token;
+ name += (name.empty() ? "" : " ") + token;
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_M_create
Replacing string(" ", name.empty() ? 0 : 1) with (name.empty() ? "" : " ") and the same in the while() loop for value fixes the problem (for me).
Does anyone know if "string(" ", 0)" is invalid C++ ?
Кресты такие кресты.
Antervis 18.02.2018 05:51 # +4
Elvenfighter 18.02.2018 16:09 # 0
https://wandbox.org/permlink/RFCaCRDx0R1ruyGZ
Скажите своему производителю libstdc++ что он мудак
3.14159265 18.02.2018 16:11 # 0
Antervis 18.02.2018 18:48 # 0
bormand 18.02.2018 19:43 # +1
3.14159265 18.02.2018 20:10 # 0
https://groups.google.com/forum/?fromgroups=#!topic/fishcooking/RjIPgeFFLPQ
>Компилятор как бы намекает, что нефиг было выёбываться с этим конструированием стринга...
Кстати да. У комилятора же задача: находить хуйню.
bormand 18.02.2018 19:34 # 0
g0_1494089131830 18.02.2018 19:36 # 0
inho 18.02.2018 22:57 # 0
1024-- 19.02.2018 07:40 # +2
Видимо, реализация попыталась выделить 0 байт под строку и сломалась.
Steve_Brown 19.02.2018 19:38 # +1
- size
If this argument is zero, the function still returns a distinct non-null pointer on success
http://www.cplusplus.com/reference/cstdlib/malloc/
If size is zero, the return value depends on the particular library implementation (it may or may not be a null pointer)
Antervis 19.02.2018 21:00 # +1
32. The intent is to have operator new() implementable by calling malloc() or calloc(), so the rules are substantially the same. C++ differs from C in requiring a zero request to return a non-null pointer.
Видимо, этот пункт некорректно сделали. Откуда length_error - всё равно хз
g0_1494089131830 19.02.2018 21:12 # −1
Steve_Brown 20.02.2018 10:39 # 0
g0_1494089131830 20.02.2018 11:00 # 0
CaptainPlastid 23.02.2018 21:44 # +1
На мсдн нет инфы, что "0" это весь буфер, а не "пусто", в пайпах, долго искали...
SemaReal 25.02.2018 02:15 # +1