Проблема 2008 года :)

    Date: 03/03/08 (Code WTF)    Keywords: no keywords



    Я хуею и плачу, плачу и хуею


    В проекте которым я теперь рулю. Нам достался клиентский софт. Написанный одной нехорошей конторой (не буду раскрывать имен).


    В пятницу мне звонят с утра и говорят "не работает"
    с ошибкой "29.02.1990 не правильная дата"


    Разработчики говнокода посоветовали поменять время на серверах баз данных.
    И Вы думаете я им поверил, хрен им не дождутся.


    Беглый анализ исходников клиента показал наличие кода.

    DPD_N:=COPY(DATETOSTR(DATE),1,6)+INTTOSTR(STRTOINT(COPY(DATETOSTR(DATE),7,4))-18);
    IF STRTODATE(DR)<DPD THEN
       BEGIN
    
    _Winnie C++ Colorizer



    блиять это какже нужно не любить собственную профессию. чтобы так обращаться с датами.


    дальше интереснее :)


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


    пришлось корректировки вносить напрямую в их бинарник.


    убрал проверку "IF STRTODATE(DR) " проверил, положили в систему обновления, клиенты обновились.


    Работают.


    через два часа еще звонок


    ошибка при печати решения о выдаче, анализ кода показал

    decodedate(dbedit46.Field.AsDateTime,Year,month,day);
    vdestdo_:=Datetostr(encodedate(Year+5,Month,Day));
    
    _Winnie C++ Colorizer


    блиять сказал я опять и пристальнее присмотревшись к исходникам нашел еще с десяток мест такого кода


    что бы заставить это работать пришлось дописать чуток кода для encodedate
    который бы выполнял коррекцию 29.02.xxxx на 28.02.xxxx


    nop - дополнительные потому что изначально проверка правила дату на 31.03.xxxx если год не високосный



    .0064A7CC: 663DD807                     cmp         ax,007D8 
    .0064A7D0: 7415                         je         .00064A7E7  
    .0064A7D2: 6683FA02                     cmp         dx,002 
    .0064A7D6: 750F                         jne        .00064A7E7 
    .0064A7D8: 6683F91D                     cmp         cx,01D 
    .0064A7DC: 7509                         jne        .00064A7E7  
    .0064A7DE: 66B91C00                     mov         cx,0001C 
    .0064A7E2: 90                           nop
    .0064A7E3: 90                           nop
    .0064A7E4: 90                           nop
    .0064A7E5: 90                           nop
    .0064A7E6: 90                           nop
    .0064A7E7: 55                           push        ebp
    .0064A7E8: 8BEC                         mov         ebp,esp
    .0064A7EA: 81C4F4FFFFFF                 add         esp,0FFFFFFF4
    .0064A7F0: E9D50ADCFF                   jmp        .00040B2CA  
    _Winnie C++ Colorizer



    такое вот классическое решение проблемы хххх года :))

    Source: http://community.livejournal.com/code_wtf/123719.html

« Когда мы были... || конструкция »


antivirus | apache | asp | blogging | browser | bugtracking | cms | crm | css | database | ebay | ecommerce | google | hosting | html | java | jsp | linux | microsoft | mysql | offshore | offshoring | oscommerce | php | postgresql | programming | rss | security | seo | shopping | software | spam | spyware | sql | technology | templates | tracker | virus | web | xml | yahoo | home