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

    +100

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    #include <iostream>
    int main(void)
    {
      for (int i=0;i<600000000;i++)
      cout<<"Ten minuters";
    //IT Works!
    }

    Реальный код с cyberforum. Задание звучало как "Написать таймер, каждые 10 минут выводящий какое-нибудь сообщение". Один умник написал такое нечто, от чего я просто впал в ступор.

    darkcheg, 02 Февраля 2010

    Комментарии (32)
  2. Си / Говнокод #2502

    +136.7

    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
    BOOLEAN
    KiCheckForAtlThunk (
        IN PEXCEPTION_RECORD ExceptionRecord,
        IN PCONTEXT Context
        )
    
    /*++
    
    Routine Description:
    
        This routine will determine whether an access violation was raised due to
        an attempt to execute an ATL thunk in a no-execute, non-stack area.
    
        If so, the thunk will be emulated and execution resumed.
    
    Arguments:
    
        ExceptionRecord - Supplies a pointer to an exception record.
    
        Context - Supplies a pointer to a context frame.
    
    Return Value:
    
        TRUE - Context was updated to reflect the emulated ATL thunk, resume
               execution.
    
        FALSE - Not an ATL thunk, continue raising the exception.
    
    --*/
    
    //.........
    //KiDispatchException:
    //......
     switch (ExceptionRecord->ExceptionCode) {
            case STATUS_BREAKPOINT:
                ContextFrame.Eip--;
                break;
    
            case KI_EXCEPTION_ACCESS_VIOLATION:
                ExceptionRecord->ExceptionCode = STATUS_ACCESS_VIOLATION;
                if (PreviousMode == UserMode) {
                    if (KiCheckForAtlThunk(ExceptionRecord,&ContextFrame) != FALSE) {
                        goto Handled1;
                    }
    
    //................

    Объявление KiCheckForAtlThunk (втыкать в комменты и название =)) ) Для тех кто в танке: исходники Windows, оконные классы ATL выделяют тупо в хипе кусок-переходник, который заменяет HWND, идущий первым параметром в оконную процедуру, на естественный, объектно-ориентированный this. Так вот, если у нас установлено где-то в реестре юзать защиту от выполнения данных, то, естественно, в хипе хер чего выполнишь, и возникнет #GP, и тут-то нам и придет на помощь KiCheckForAtlThunk =) Короче, ИМХО, вносить изменения в ядро, для того, чтобы нормально работала криво написанная юзермодная библиотека -- та еще жесть =) Все кто минусует -- не шарят :P

    ISith, 30 Января 2010

    Комментарии (3)
  3. Си / Говнокод #2489

    +144.9

    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
    node_t* read_record(FILE *file) {
        int success = 0;
        node_t *record = 0;
        do {
            int nsz, dsz;
            record = (node_t*)malloc(sizeof(node_t));
            if (!record) {
                break;
            }
            record->data = 0;
            record->next = 0;
    
            if (fread(&nsz, sizeof(int), 1, file) != 1 || feof(file)) {
                break;
            }
    
            if (fread(record->name, 1, nsz, file) != nsz || feof(file)) {
                break;
            }
    
            /* ... */
    
            record->nsz = nsz;
            record->dsz = dsz;
            success = 1;
        } while (0);
    
        if (record && !success) {
            free_list(record);
            record = 0;
        }
    
        return record;
    }
    
    
    void write_record(FILE *file, node_t *record) {
        int dsz = record->dsz;
        int nsz = record->nsz;
    
        if ((fwrite(&nsz, sizeof(int), 1, file) != 1) ||
            (fwrite(record->name, 1, nsz, file) != nsz) ||
            (fwrite(&csz, sizeof(int), 1, file) != 1) ||
            (fwrite(record->data, 1, dsz, file) != dsz) ||
            ferror(file)) {
            fputs("Error: write_record", stderr);
        }
    }

    govnopetya, 26 Января 2010

    Комментарии (16)
  4. Си / Говнокод #2477

    +92.9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    string* newstr()
    {
        string* str;
        return memset(str=malloc(sizeof(string)), 0, str?sizeof(string):0);
    }

    GovnocoderJr, 23 Января 2010

    Комментарии (23)
  5. Си / Говнокод #2461

    +138.7

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    char serverName[MAX_NAME];
    char buttonName[MAX_NAME];
    char serverIdStr[3];
    serverIdStr[2] = '\0';
    int currentSpot = 0;
    
    // ...... получение serverName и currentSpot
    
    serverIdStr[0] = '0' + ((currentSpot+1)/10);
    serverIdStr[1] = '0' + ((currentSpot+1)%10);
    strcpy(buttonName, buttonPrefix);
    strcat(buttonName, serverIdStr);

    Кто то не знает про существование sprintf...

    pushkoff, 20 Января 2010

    Комментарии (8)
  6. Си / Говнокод #2436

    +144.8

    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
    __inline BOOL
    SearchOneDirectory(
                      IN  LPSTR Directory,
                      IN  LPSTR FileToFind,
                      IN  LPSTR SourceFullName,
                      IN  LPSTR SourceFilePart,
                      OUT PBOOL FoundInTree
                      )
    {
        //
        // This was way too slow. Just say we didn't find the file.
        //
        *FoundInTree = FALSE;
        return(TRUE);
    }

    Оптимизация Microsoft. Найдено в исходниках Windows, утекших в 2004.

    Lockal, 18 Января 2010

    Комментарии (8)
  7. Си / Говнокод #2426

    +144.8

    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
    __inline BOOL
    SearchOneDirectory(
                      IN  LPSTR Directory,
                      IN  LPSTR FileToFind,
                      IN  LPSTR SourceFullName,
                      IN  LPSTR SourceFilePart,
                      OUT PBOOL FoundInTree
                      )
    {
        //
        // This was way too slow. Just say we didn't find the file.
        //
        *FoundInTree = FALSE;
        return(TRUE);
    }

    Оптимизация by Microsoft. Шедевр из утёкших в 2004 году исходников Windows, заставило посмеятся, веселые у Микрософта заглушки

    Sauron, 16 Января 2010

    Комментарии (21)
  8. Си / Говнокод #2421

    +144.9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    char str[n]="Programmirivanie eto horoshiy predmet";
         for(i=0; i<n; i++)
         {
              printf("%c", str[i]);
         }
         printf("\n");

    Без комментариев ))

    Grockles, 15 Января 2010

    Комментарии (18)
  9. Си / Говнокод #2403

    +134.7

    1. 1
    si_node_append(&(*config), si_node_create_ex(param_name, param_value, param_flag)); // ...to the end

    Смысл операции &(*var) непонятен.
    Отдельного внимания заслуживает коментарий... мне удалось воткнуть :) оказывается, имелось в виду не "вперед, до самого конца", а "добавляем в конец списка", ага.

    Правда, был круче комент в одном месте... "redirect of conclusion"...
    В общем, когда вкурил что имелось в виду "перенаправление вывода", чуть не сдох со смеху :)

    Pencioner, 14 Января 2010

    Комментарии (23)
  10. Си / Говнокод #2374

    +93.9

    1. 1
    2. 2
    if (cmd[1] == RESET) // если принятая команда RESET
    {((void(*)(void))0)();} // что-то из черной магии

    Сломай себе голову!!!!
    друг прислал, незнаю где накопал, но выглядит круто!

    LuCiFer, 05 Января 2010

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