Jawa / Говнокод #4402 Ссылка на оригинал

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
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
public int doEndTag() throws JspException {
        HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
        try {
         	String fieldValue = fdata;
    		String boolVal="false";
    		StringBuffer field_Value = new StringBuffer();
    		String indexString="";
    		int spaceIndex;
    	     
        	int slen = fieldValue.length();
    		int starti=0;
    		int endi= fsize;
    		if (fdata==null) {
    			 boolVal="true";
    			 field_Value.append("");
    		}
    		
    		if (fsize > slen ||  truncateDataSize > fdata.length() ) {
    		   boolVal="true";
    		   field_Value.append(fdata);
    		}
    		
    		if (truncateDataSize!=0  && fdata.length() > truncateDataSize ) {
    		  fieldValue=""; 	
    		  fieldValue = fdata.substring(starti,truncateDataSize);
    		  slen = fieldValue.length(); 
    		}
    		
    		while(boolVal=="false") {
    			indexString=  fieldValue.substring(starti,endi); 
    			spaceIndex = indexString.lastIndexOf(" ");
    			if (spaceIndex == -1) {
    				int initialLength = field_Value.length(); 
    				field_Value.append(fieldValue.substring(starti,endi));
    				// field_Value.append("<br>");
    				// MT-2238 start
    				int firstIndex = indexString.indexOf("<");
    				int lastIndex  = indexString.indexOf(">");
    				if(lastIndex<firstIndex) {
    					lastIndex  = indexString.indexOf(">",(lastIndex+1));
    				}
    				if(firstIndex >= 0 && lastIndex <= indexString.length() && lastIndex>firstIndex) {
    					if(!(indexString.substring(firstIndex+1,lastIndex).equalsIgnoreCase("br"))) {
    						if(lastIndex<=initialLength && indexString.endsWith(">")) {
    							field_Value.append("<br>");
    						}else {
    							field_Value.insert((initialLength+(lastIndex+1)),"<br>");
    						}
    					}
    				}
    				//in case no HTML tags
    				if(!checkInTag(false, field_Value.toString()) 
    						&& firstIndex==-1 && lastIndex==-1
    				) {
    					// add BR tag
    					field_Value.append("<br>");
    				}
    				// MT-2238 end
    			} else {
    				field_Value.append(fieldValue.substring(starti,starti + spaceIndex));
    				endi = starti + spaceIndex + 1;  
        			if(forceWrap == 1){
            			field_Value.append("<br>");
        			} else{
        				field_Value.append(" ");
        			}
    			}
    			starti = endi;
    			if((endi + fsize) > slen) {
    			   endi = slen - endi;
    			   field_Value.append(fieldValue.substring(starti,starti + endi));
    			   boolVal="true";
    			} else {
    				endi = endi + fsize;
    			}
    		}
    		
    		if (truncateDataSize!=0  && fdata.length() > truncateDataSize && singleLine==false) {
    		   field_Value.append("...");
    		}
    		
    		if (singleLine== true ) {
	    		 if (fsize<fdata.length())	
	    		 {	
	    		  field_Value.delete(0,field_Value.length());		
	    		  field_Value.append(fieldValue.substring(0,fsize));
	    		  field_Value.append("...");
	    		 } 
    		}
    		pageContext.getOut().write(field_Value.toString());
        } catch (Exception e) {
        	log.error(" Exception in image tag ",e);
        }
        return EVAL_PAGE;
    }

Найдено в кастомном теге нашева прилаженийа. Писано паходу интусами %) ы

Вся соль в строке (#29):
while(boolVal=="false")

И что самое интересное.. Оно работает!! :DDD ы

А работает как я выяснил изза 'smart' части java %)) так как boolVal инитиализируется в этом же методе, то boolVal = "false" и "false" это 1 и тот же объект %) паэтаму и проходит сравнение. Т.е. java подменяет "false" во всех местах на адин и тот же объект %) но если бы "false" пришёл снаружи, то всё.. это другой объект %)

ппц, я когда увидел долго бился головой ап стенку %)) в папытках понять, почему оно работает %))
ксати я точно не уверен, но помойму если в настройках компилятора покапаться, то думаю можно сделать так чтобы каждой объявление "false" было новым объектом (или нельзя? О_о хотя ясно, что это бесмыслено), тогда работать не будит %) ы

Запостил: Pepper-X Pepper-X, (Updated )

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

    • и, да, странно, что пых считают кодомартышковским языком. Согласно последним "рейтингам", на первом месте жаба. Оказывается, на ней как плесень развивается стадо быдлокодеров, похлеще, чем на пыхе.
      Ответить
  • Зачем было простыню выкладывать, если дело только в одной строчке?
    Ответить
  • простыню не читал, но по поводу вопроса "почему работает?" - а потому что http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Boolean.html#Boolean(java.lang.String)
    Allocates a Boolean object representing the value true if the string argument is not null and is equal, ignoring case, to the string "true". Otherwise, allocate a Boolean object representing the value false.

    + автобоксинг
    boolVal = "true"; => boolVal = new Boolean("true"); => boolVal = true;

    Но, естественно, менее говнистым сей код от этого не становится.
    Ответить
    • Так ведь boolVal же не Boolean, а String. А работает оно потому, что здесь значение "false" фигурирует в присвоении и в сравнении в виде строкового литерала. А строковые литералы автоматически интернируются компилятором, соответственно в рантайме у них будут одинаковые адреса. Как раз == проверяет равенство адресов в памяти.
      Ответить
      • причом только, када литералы внутри однафо класа %)
        если в разных то ужо будут расныйэ.. ы
        Ответить
    • Согласен, тип Boolean ни явно, ни скрыто нигде здесь не фигурирует, и в строке boolVal с тем же успехом можно было бы писать "yes" и "no" =)

      Запостившему - срочно усиленно учить русский язык, отложив пока программирование.
      Ответить
        • %)
          руски фасмошна йа снайу лучшэ вашефа 😉 ыы

          а как писат ента личнайэ дела каштафа %) ы

          йа лична так релаксируйу %))
          з.ы. к таму жэ переключатсо с "рускафа" на "не руски" оч дажа палесна для моцка %)) пачти как с инасранава на радной и абратна %) ы
          Ответить

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

Из-за тебя ушел bormand, guest!

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


    8