1. C++ / Говнокод #5572

    +160

    1. 1
    2. 2
    3. 3
    4. 4
    void IRQHandler(void)
    {
    ...
    WaitSemaphore(semH);

    Из кода для встроенного устройства реального времени.

    Говногость, 08 Февраля 2011

    Комментарии (13)
  2. C++ / Говнокод #5571

    +164

    1. 1
    i = j ? k : l = m;

    опять же с форума wasm.ru... пол дня объяснял почему с++ компилятор трактует это выражение как i = j ? k : (l = m), а никак по-другому... не пишите такую чушь никогда)

    ReL, 07 Февраля 2011

    Комментарии (26)
  3. C++ / Говнокод #5565

    +166

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    // 0. original version:
    struct Subscriber {
    	ServiceConfig *services;
    };
    
    struct ServiceConfig {
    };
    
    // reported problem: as per doc, Customer may have multiple service configurations, yet we can configure only one.
    
    // 1. next "fixed" version, as delivered to the customer:
    struct Subscriber {
    };
    
    struct ServiceConfig {
    	Subscriber *subs;
    };
    
    // ticket reopened: wtf. changing services for one customer, affects others!!
    
    // 2. next "fixed" version, as delivered to the customer:
    struct Subscriber {
    	ServiceConfig *services;
    };
    
    struct ServiceConfig {
    };
    
    // ticket reopened: @#$%^& [*BEEP*] @#$%^& [*BEEP*] @#$%^&*
    
    // 3. finally:
    struct Subscriber {
    };
    
    struct ServiceConfig {
    };
    
    struct SubscriberServiceConfig {
    	Subscriber *subs;
    	ServiceConfig *services;
    };

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

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

    Dummy00001, 07 Февраля 2011

    Комментарии (9)
  4. C++ / Говнокод #5546

    +178

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    struct rt_asserter_t {
    	string func_;
    	rt_asserter_t( string func ): func_(func){};
    	void operator  = (bool condition) {
    		if( condition == true ) {
    			;;;
    		} else if (condition == false) {
    			throw new rt_assert_ex(func_);			
    		} else {
    			throw new unknown_ex(func_);
    		}
    	} 
    };

    реальный крупный коммерческий проект.
    Какой-то тайный замысел в этой магии.

    ossa, 05 Февраля 2011

    Комментарии (32)
  5. C++ / Говнокод #5540

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    try
    {
      for(..)
      {
         for(..)
         {
            if(...)
               throw;//генерация исключения
         }
      }
    }
    catch(..)
    {
    }

    Кому-то религия не позволяет юзать goto. Сорри, если было.

    CHayT, 05 Февраля 2011

    Комментарии (32)
  6. C++ / Говнокод #5539

    +164

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    if ((AnalysisType == 0) || (!m_UseExtraInfo)) {
    	o1 = o2 = -1;
    	do {
    		fseek(F, o1, SEEK_END); Buf[0] = fgetc(F);
    		if ((Buf[0] == 0xFF) || ((Buf[0] == 0x7F) && (AnalysisType == 0))) {
    			o2 = o1; o1--; FFcnt = 1;
    			do {
    				fseek(F, o1, SEEK_END); Buf[0] = fgetc(F);
    				if ((Buf[0] == 0xFF) || ((Buf[0] == 0x7F) && (AnalysisType == 0)))
    					FFcnt++;
    				o1--;
    			}
    			while ((Buf[0] == 0xFF) || ((Buf[0] == 0x7F) && (AnalysisType == 0)));
    			if ((FFcnt == 71) || (FFcnt == 73)) PosTavern = o2;
    			if ((PosCheater == -1) && (FFcnt > 50)) {
    				PosCheater = o2; fseek(F, o2, SEEK_END);
    				do {
    					Buf[0] = fgetc(F);
    					if (Buf[0] != 0x00) PosCheater++;
    				}
    				while (Buf[0] != 0x00);
    			}
    		}
    		else o1--;
    	}	
    	while ((o1 > -sz) &&
    		   (((AnalysisType == 1) && (PosTavern ==  -1)) ||
    		    ((AnalysisType == 0) && (PosCheater == -1))));
    }
    else {
    	o1 = o2 = -200;
    	oFFcnt = -1;
    	do {
    		fseek(F, o1, SEEK_END);
    		Buf[0] = fgetc(F); Buf[1] = fgetc(F);
    		if ((Buf[0] == HL) && (Buf[1] == HR)) {
    			o2 = o1 + 86;
    			FFcnt = 0;
    			do {
    				fseek(F, o2, SEEK_END);
    				Buf[0] = fgetc(F);
    				if (Buf[0] == 0xFF) {
    					FFcnt++; o2--;
    				}
    			}
    			while (Buf[0] == 0xFF);
    			if ((oFFcnt == -1) || (abs(72 - FFcnt) < abs(72 - oFFcnt))) {
    				PosTavern = o1; oFFcnt = FFcnt;
    			}
    		}
    		o1--;
    	}
    	while (o1 > -sz);
    	if (PosTavern != -1)
    		PosTavern = PosTavern + 86 + 0x91 * (7 - PN);
    
    	if (m_ChangeHeroes && ((HL_new >= 0) || (HR_new >= 0))) {
    		o1 = o2 = -1;
    		do {
    			fseek(F, o1, SEEK_END); Buf[0] = fgetc(F);
    			if ((Buf[0] == 0xFF) || (Buf[0] == 0x7F)) {
    				o2 = o1; o1--; FFcnt = 1;
    				do {
    					fseek(F, o1, SEEK_END); Buf[0] = fgetc(F);
    					if ((Buf[0] == 0xFF) || (Buf[0] == 0x7F)) FFcnt++;
    					o1--;
    				}
    				while ((Buf[0] == 0xFF) || (Buf[0] == 0x7F));
    				if (FFcnt > 50) {
    					PosCheater = o2; fseek(F, o2, SEEK_END);
    					do {
    						Buf[0] = fgetc(F);
    						if (Buf[0] != 0x00) PosCheater++;
    					}
    					while (Buf[0] != 0x00);
    				}
    			}
    			else o1--;
    		}	
    		while ((o1 > -sz) && (PosCheater == -1));
    	}
    }

    Кустарно-мистический анализатор сейвов для Героев 3.
    Так я писал пять с половиной лет назад...

    Kirinyale, 05 Февраля 2011

    Комментарии (12)
  7. C++ / Говнокод #5536

    +163

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Engine::GetSingleton()->SetCallbacks(
    	new myname::Method<void(void),Application>(&Application::Render, boost::weak_ptr<Application>(application)),
    	new myname::Method<void(void),Application>(&Application::Update, boost::weak_ptr<Application>(application)),
    	0,
    	0,
    	new myname::Method<void(void),Application>(&Application::Init, boost::weak_ptr<Application>(application)),
    	new myname::Method<void(void),Application>(&Application::Cleanup, boost::weak_ptr<Application>(application))
    );

    Особая шаблонная магия + ООП мозга.

    CHayT, 05 Февраля 2011

    Комментарии (28)
  8. C++ / Говнокод #5532

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    class Recode
    {
    private:
    	union
    	{
    		INT16U gg;
    		unsigned char g[2];
    	};
    public:
    	Recode(INT16U a)		
    	{
    		gg=a;
    	};
    
    	void recode(void)
    	{
    		coding->recodeArray(g[0], g[1]);
    	}
            //Куча других методов:
            ...
    };
    
    /*#define C Recode
    Recode a[]={1, C(3,4),  2, 34, C(98,23)};
    #undef C*/
    
    #define _ +256*
    Recode a[]={1 , 3 _ 4 , 56 , 0 _ 56};
    #undef _

    Идея интересная, но не для реального кода. :)

    Говногость, 04 Февраля 2011

    Комментарии (11)
  9. C++ / Говнокод #5530

    +164

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    class Parent{
      int class_id;
      union Children{
         ClassA   classA;
         ClassB   classB;
         .....
      }
    }

    Найдено на просторах Интернета.

    Говногость, 04 Февраля 2011

    Комментарии (6)
  10. C++ / Говнокод #5529

    +164

    1. 1
    min=(pSamplesVector->operator[](i)).x;

    rat4, 04 Февраля 2011

    Комментарии (13)