- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
switch (options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE))
{
case 0:
case PCRE_BSR_ANYCRLF:
case PCRE_BSR_UNICODE:
break;
default: errorcode = ERR56; goto PCRE_EARLY_ERROR_RETURN;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+143
switch (options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE))
{
case 0:
case PCRE_BSR_ANYCRLF:
case PCRE_BSR_UNICODE:
break;
default: errorcode = ERR56; goto PCRE_EARLY_ERROR_RETURN;
}
Выкидываем три варианта, обрабатываем один.
1. 0 - похуй
2. PCRE_BSR_ANYCRLF - похуй
3. PCRE_BSR_UNICODE - похуй
4. errorcode = ERR56 - йоба!
По-моему наоборот, идём дальше по 3 вариантам и вылетаем на PCRE_BSR_ANYCRLF & PCRE_BSR_UNICODE, хотя нафиг тогда свитч.
и если перепесать на if, то будет нужно доп переменная (что бы три раза значение не вычислять). может потому что не хотели еще одну временную переменную вводить вот так и написали.
if options | PCRE_BSR_ANYCRLF | PCRE_BSR_UNICODE = options then ... error ...
пойдите, выпейте кофе - вы еще видно не проснулись.
Естественно что код *что то* делает в этом случае, а именно *не* обламывается по ошибке.
Если ни одного флага - идем в свич, на первом case выходим из свича идем дальше. Ничего не произошло.
Если один флаг - идем в свич, на втором-третьем case выходим. Ничего не произошло.
Если два флага - идем в свич, на третьем case вываливаемся в ошибку.
Вот и предлагаю if (условие третьего case) --> ошибка
поубивал бы
я конечно избалован работой с некоторыми крутыми опенсорсными проектами, но я видел кучи уродливого (коммерческого) кода без goto - и кучи читабельного читабельного (open source, cue: linux kernel) кода с goto. я естественно предпочитаю последнее.
не будем ворошить древний готосрач