Конференция "Прочее" » Какой замечательный код нашел в Vcl.Graphics
 
  • Rouse_ © (11.04.17 15:53) [0]
    procedure TBrush.SetColor(Value: TColor);
    var
     BrushData: TBrushData;
    begin
     if (Value <> Color) or ((Style = bsClear) and (Style <> bsSolid)) then


    Это даже интересней чем ляп в System.ObjAuto где GetVariantType на TypeInfo^.Kind = tkClass всегда возвращает varInteger даже в 64 битах.
  • Kilkennycat © (11.04.17 16:19) [1]
    просто среднее для гарантии выполнения последнего
  • Игорь Шевченко © (11.04.17 17:38) [2]
    Delphi4

    procedure TBrush.SetColor(Value: TColor);
    var
     BrushData: TBrushData;
    begin
     GetData(BrushData);
     BrushData.Color := Value;
     if BrushData.Style = bsClear then BrushData.Style := bsSolid;
     SetData(BrushData);
    end;



    Delphi 2006

    procedure TBrush.SetColor(Value: TColor);
    var
     BrushData: TBrushData;
    begin
     GetData(BrushData);
     BrushData.Color := Value;
     if BrushData.Style = bsClear then BrushData.Style := bsSolid;
     SetData(BrushData);
    end;



    Delphi 2010, Delphi XE5

    procedure TBrush.SetColor(Value: TColor);
    var
     BrushData: TBrushData;
    begin
     if (Value <> Color) or ((Style = bsClear) and (Style <> bsSolid)) then
     begin
    {$IF DEFINED(CLR)}
       BrushData := GetBrushData;
       BrushData.Color := Value;
       if BrushData.Style = bsClear then
         BrushData.Style := bsSolid;
       SetBrushData(BrushData);
       if BrushData.RefCount = 0 then
         BrushData.Free;
    {$ELSE}
       GetData(BrushData);
       BrushData.Color := Value;
       if BrushData.Style = bsClear then
         BrushData.Style := bsSolid;
       SetData(BrushData);
    {$IFEND}
     end;
    end;



    Понабрали студентов...
  • Sha © (11.04.17 17:50) [3]
    да уж, тут зубр не валялся
  • Kerk © (11.04.17 18:01) [4]
    У меня есть целая серия заметок про косяки найденные в VCL/RTL/FMX статическим анализом :)
  • dmk © (11.04.17 21:59) [5]
    >Понабрали студентов...
    Индусы наступают ;)

    В XE6 тоже самое.
  • Rouse_ © (12.04.17 08:45) [6]

    > Kerk ©   (11.04.17 18:01) [4]
    > У меня есть целая серия заметок про косяки найденные в VCL/RTL/FMX
    > статическим анализом :)

    Так выложил бы, зачем нам мины замедленного действия.
    Я явные косяки всегда патчу, ну вот наподобие ошибки в GetVariantType, где в 64 битах при работе с макросами через ActiveScript будет AV, ибо адрес объекта четырьмя байтами обрезается, причем проявится только когда памяти по младшим адресам не останется.
  • Игорь Шевченко © (12.04.17 10:37) [7]
    Rouse_ ©   (12.04.17 08:45) [6]

    Ты уже отослал в QC ? Номер репорта сюда выложи, плз, чтобы за него можно было проголосовать
  • Kerk © (12.04.17 11:49) [8]

    > Rouse_ ©   (12.04.17 08:45) [6]
    >
    > > Kerk ©   (11.04.17 18:01) [4]
    > > У меня есть целая серия заметок про косяки найденные в VCL/RTL/FMX
    > > статическим анализом :)
    >
    > Так выложил бы, зачем нам мины замедленного действия.

    Давно это было, я не уверен что оно еще актуально :)

    http://sourceoddity.com/blog/2015/03/fixinsight-vs-vcl/
    http://sourceoddity.com/blog/2015/03/fixinsight-vs-rtl/
  • Rouse_ © (12.04.17 11:53) [9]

    > Игорь Шевченко ©   (12.04.17 10:37) [7]
    > Rouse_ ©   (12.04.17 08:45) [6]
    >
    > Ты уже отослал в QC ? Номер репорта сюда выложи, плз, чтобы
    > за него можно было проголосовать

    Нет, я только недавно наткнулся, буквально в конце той недели, еще не успел, хотел Ромку попросить, да забыл :)
    Вечером как освобожусь попробую сделать.
  • Игорь Шевченко © (12.04.17 14:39) [10]
    Kerk ©   (12.04.17 11:49) [8]

    Что интересно - большинство из того, что найдено тобой, относится к нововведениям. Старый код не так уж грязен.
  • Германн © (13.04.17 01:47) [11]

    > Старый код не так уж грязен.
    >

    Хотелось бы знать что подразумевается под "старым кодом".
 
Конференция "Прочее" » Какой замечательный код нашел в Vcl.Graphics
Есть новые Нет новых   [134431   +9][b:0][p:0.001]