ДействиеСценарий / Говнокод #5808 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
switch(cbChanges.selectedIndex)
{
     case 1:
            changes = CHANGES_MODIFIED_STATUS;
            break;
     case 1:
            changes = CHANGES_JOINERS_STATUS;
            break;
     case 1:
            changes = CHANGES_LEAVERS_STATUS;
            break;
}

Epic Fail!

Запостил: dimas_art dimas_art, (Updated )

Комментарии (6) RSS

    • Даже если компилятору ничего не стоит определить, что все кейсы одинаковые:

      function :Test::private:testSwitch()::void
          maxStack:2 localCount:2 initScopeDepth:9 maxScopeDepth:10
              debugfile     	"/home/wvxvw/workspace/Test/src;;Test.as"
              debugline     	13
              getlocal0     	
              pushscope     	
              jump          	L0
      
          L1: label         	
              debugline     	17
              findpropstrict	:trace
              pushstring    	"case 1"
              callproperty  	:trace (1)
              pop           	
              debugline     	18
              jump          	L2
      
          L3: label         	
              debugline     	19
              findpropstrict	:trace
              pushstring    	"case 2"
              callproperty  	:trace (1)
              pop           	
              debugline     	20
              jump          	L2
      
          L4: label         	
              debugline     	21
              findpropstrict	:trace
              pushstring    	"case 3"
              callproperty  	:trace (1)
              pop           	
              debugline     	22
              jump          	L2
      
          L5: label         	
              jump          	L2
          L0: debugline     	15
              findpropstrict	:Math
              getproperty   	:Math
              callproperty  	:random (0)
              setlocal1     	
              debugline     	17
              pushbyte      	1
              getlocal1     	
              ifstrictne    	L6
      
              pushshort     	0
              jump          	L7
          L6: debugline     	19
              pushbyte      	1
              getlocal1     	
              ifstrictne    	L8
      
              pushshort     	1
              jump          	L7
          L8: debugline     	21
              pushbyte      	1
              getlocal1     	
              ifstrictne    	L9
      
              pushshort     	2
              jump          	L7
          L9: pushfalse     	
              iffalse       	L10
      
              pushshort     	3
              jump          	L7
          L10:pushshort     	3
          L7: kill          	1
              lookupswitch  	default:L5 maxcase:3 L1 L3 L4 L5
          L2: debugline     	24
              returnvoid    	
          0 Extras
          0 Traits Entries
      Ответить
      • private function testSwitch():void // line 13
        	{
        		switch (Math.random())
        		{
        			case 1: trace("case 1");
        				break;
        			case 1: trace("case 2");
        				break;
        			case 1: trace("case 3");
        				break;
        		}
        	}
        Ответить
      • L9: pushfalse // положить false на стек
         iffalse L10 // если последний элемент на стеке это false то перейти на метку L10
        
         pushshort 3 // положить на стек число 3
         jump L7 // перейти на метку L7 (все равно это никогда не произойдет)
        . . .
        L7: kill 1 // на всякий случай очистить первый регистр... ну а мало ли :)


        Кстати, вот этот кусок вообще потрясающий...
        Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8