1. Си / Говнокод #9767

    +134

    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
    83. 83
    84. 84
    85. 85
    86. 86
    зависающие маллок )))
    
    void * __cdecl malloc(size_t size)
    {
    	// No fail malloc!
    	void *pMem;
    	do {
    		pMem=HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,size);
    		if(pMem==NULL) Sleep(2000);
    	} while(pMem==NULL);
    
    	return pMem;
    }
    
    void * __cdecl operator new( unsigned int cb )
    {
    	// No fail new!
    	void *pMem;
    	do {
    		pMem=HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,cb);
    		if(pMem==NULL) Sleep(2000);
    	} while(pMem==NULL);
    
    	return pMem;
    }
    
    
    что хотел аффтар ? !!! аццкий сотона
    
    int GetCfgBool(char *cfgstr,const char *key)
    {
    	return GetCfgNum(cfgstr,key)?TRUE:FALSE;
    }
    
    аффтар застрелись !!!
    
    char *GetCfgStr(char *cfgstr,const char *key)
    {
    	char *str=cfgstr;
    	
    	// Skip past name of options list
    	while(*str!='\0') str++;
    	str++;
    	// Walk through options
    	while(*str!='\0') {
    		int nLen;
    		if(*str=='B') {
    			nLen=1;
    			str+=2;
    			if(strncmp(str,key,strlen(key))==0) break;
    		} else if(*str=='S') {
    			str+=2;
    			nLen=atoi(str);
    			while(*str!=']') str++;
    			str+=2;
    			if(strncmp(str,key,strlen(key))==0) break;
    		} else if(*str=='N') {
    			str+=2;
    			char *pb;
    			pb=str;
    			while(*str!=',') str++;
    			nLen=(DWORD)str-(DWORD)pb;
    			str++;
    			pb=str;
    			while(*str!=']') str++;
    			int nLen2=(DWORD)str-(DWORD)pb;
    			if(nLen2>nLen) nLen=nLen2;
    			str+=2;
    			if(strncmp(str,key,strlen(key))==0) break;
    		}
    		while(*str!='=') str++;
    		str++;
    		str+=(nLen+1);
    	}
    	if(*str!='\0') {
    		while(*str!='=') str++;
    		return str+1;
    	}
    	
    	return NULL;
    }
    
    
    исходники BO2K гениально !!!)) 
    и как не стыдно ЭТО распространять 
    http://www.bo2k.com/

    Запостил: 63F45EF45RB65R6VR, 26 Марта 2012

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

    • // No fail malloc!

      Магия, ёпта!
      Ответить
    • BO2K is the most powerful network administration tool available for the Microsoft environment, bar none.
      LOL
      Ответить
      • Да, дальше по тексту уже не весело
        Ответить
      • Это же Back Orifice! Заслужѣнный анальный дедушка удалѣнного администрирования.
        Ответить
    • В смысле "что хотел аффтар"? Аффтар, очевидно писал многопоточное приложение. Логика понятна: "Если один поток не может выделить память, это потому, что ее захапал другой поток. Подождем пока другой поток ее освободит...". Это, конечно, не оправдывает понаписанного...
      Ответить
      • Считывание картинки попиксельно очень сильно нагружает как саму систему, так и основной поток процесса приложения(mainstream). В данном случае нагрузку позволят снизить потоки. Создайте в своем приложении дополнительный поток. С ними работать очень просто, но зато они позволяют значительно снизить нагрузку на основной поток. Всю рутину обычно всегда выносят в отдельный поток. Многопоточные приложения более гибкие, реже падают от сильной нагрузки.
        Ответить
        • > Считывание картинки попиксельно очень сильно нагружает как саму систему

          ОХУЕТЬ!!!
          Ответить
      • Да, синхронизация через задержки это мощно!
        Ответить
    • А оператор new[] Пушкин переопределять будет?

      А delete и delete[]?
      Ответить
      • News July 2 2007 Looking for someone that knows C++
        Они сами не знают С++, ищут хоть кого-нибудь, кто знает
        Ответить
    • GetCfgStr не вкурил
      Ответить
    • Он же старый и в программах такого класса обычно не требуются решения промышленного уровня.
      Ответить
    • Ну, GetCfgBool - почему бы и нет.
      Ответить
    • показать все, что скрытоvanished
      Ответить

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