1. Си / Говнокод #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)
  2. C# / Говнокод #2501

    +135.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
    public class PlayerWindow
    {
        private readonly ScheduleManager _scheduleManager = new ScheduleManager();
    
    ...
    
        private void OpenSchedule(string timesheetFilename)
        {
            if (!_scheduleManager.OpenSchedule(timesheetFilename))
            {
                _isOpen = false;
                return;
            }
    
            _isOpen = false;
        }
    }

    Собственное творчество. ^_^

    spbAngel, 29 Января 2010

    Комментарии (9)
  3. Pascal / Говнокод #2500

    +109.8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    for i := 1 to X do begin
      tblitem.FindKey([tbltranitemno.text]);
      tblitem.GotoKey;
      button3.Click;
      edit3.Text := floattostr(org-i);
      x := 1-1;
    end;

    (c) India

    хочется взять и уеб...

    dmtr76, 29 Января 2010

    Комментарии (11)
  4. Java / Говнокод #2499

    +64.9

    1. 1
    2. 2
    3. 3
    // ...
    private Blob lClob; //файл
    // ...

    nxx, 29 Января 2010

    Комментарии (8)
  5. 1C / Говнокод #2498

    −127.7

    1. 1
    Выбрать * из РегистрСведений.Таблица Где Таблица.ДатаПодтверждения >= ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))

    Это вот условие писал мой бывший начальник..

    KingOfShit, 29 Января 2010

    Комментарии (12)
  6. PHP / Говнокод #2497

    +162.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
    $results = $_POST['result'];
    
    foreach ($results as $key => $result)
    {
    	$has_results = true;
    
    	if ( ! $result['text'] OR ! $result['description'])
    	{
    		if ( ! $result['text'] AND ! $result['description'])
    		{
    			$has_results = false;
    
    			unset($results[$key]);
    		}
    		else
    		{
    			$post->add_error('result', 'required');
    		}
    	}
    }
    
    if ( ! $has_results)
    {
    	$post->add_error('result', 'required');
    }

    Верификация $_POST

    Говноговно, 29 Января 2010

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

    +146.9

    1. 1
    2. 2
    3. 3
    4. 4
    class ToBeOrNotToBe{};
    void distortion(ToBeOrNotToBe...)
    {
    }

    Код компилируется в 2008 MVS

    Barmaglot, 28 Января 2010

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

    +144.5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    bool condition = item.AccessPermissionId.HasValue ? true : false;
       if (condition)
       {
          ...
       }

    зачем ?!

    the_boris30, 28 Января 2010

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

    +72.4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    this->pRCH->setChckSize(this->pRCH->getChckSize() + 
    this->pvRP->at(this->pvRP->size() - 1)->getRHBidR()->getRHBSize()
     + sizeof(*this->pvRP->at(this->pvRP->size() - 1)->getRHBidR()->getRHBid()));
    this->pRBCH->setChckSize(this->pRBCH->getChckSize() + 
    this->pvRP->at(this->pvRP->size() - 1)->getRHBR()->getRHB()->getRBSize());

    Автор кода отчаянно доказывал прямоту кода...

    Methos, 28 Января 2010

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

    +923.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
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    vector<
    #ifdef O_UNICODE
    wstring
    #else
    string
    #endif
    > get_file_list(
    #ifdef O_UNICODE
    wstring
    #else
    string
    #endif
    dir) {
    	#ifdef O_UNICODE
        wdirectory_iterator
        #else
        directory_iterator
        #endif
    	e;
        vector<
        #ifdef O_UNICODE
        wstring
        #else
        string
        #endif
        > ret;
        for (
        #ifdef O_UNICODE
        wdirectory_iterator
        #else
        directory_iterator
        #endif
    	d(dir); d != e; d++) {
            if (is_directory(d->status())) {
                vector<
                #ifdef O_UNICODE
                wstring
                #else
                string
                #endif
                > tmp = get_file_list(dir +
                #ifdef O_UNICODE
                L
                #endif
                "\\" + d->filename());
                for (unsigned int i = 0; i < tmp.size(); i++)
                    ret.push_back(tmp[i]);
            } else
                ret.push_back(dir +
                #ifdef O_UNICODE
                L
                #endif
                "\\" + d->filename());
        }
        return ret;
    }

    Условная компиляция, однако

    braindead, 28 Января 2010

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