Summary: | Не закрашиваются прямоугольники | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Dmitry A. Kharitonov <kharpost> |
Component: | perl-GD2 | Assignee: | Victor Forsyuk <force> |
Status: | CLOSED NOTABUG | QA Contact: | qa-sisyphus |
Severity: | major | ||
Priority: | P3 | ||
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Dmitry A. Kharitonov
2009-08-12 19:32:52 MSD
Актуальный perl-GD: # rpm -q perl-GD perl-GD-2.41-alt1 (В ответ на комментарий №1)
> Актуальный perl-GD:
>
> # rpm -q perl-GD
> perl-GD-2.41-alt1
Не могу на роутере проверить -- стоит не правильная версия librpm
(В ответ на комментарий №0) > Не закрашиваются прямоугольники. Ошибка имеет процессорозависимый характер То есть, версии релевантных пакетов на машинах с разными процессорами были одинаковы? Только тогда наблюдая разное поведение программ можно высказывать гипотезу о процессорозависимости. > $im->filledRectangle(50,50,100,100,15); -- закрашивается > $im->filledRectangle(200,200,150,150,15); -- не закрашивается На perl-GD-2.41-alt1 с libgd2-2.0.35-alt2 второй пример у меня тоже закрашивает прямоугольник. Вообще говоря, во втором примере координаты указаны несколько нелогично. При вызове этой функции сначала указываются координаты левого верхнего угла, затем правого нижнего. В данном случае они указаны наоборот. Поведение функции при не совсем корректных входных данных может быть и не тем, которое ожидается (принцип "garbage in - garbage out") и считать его ошибочным можно только, если оно отличается от документированного. При этом perl-GD выступает не более чем оберткой для функций libgd и в данном случае просто передает полученные параметры в вызов функции gdImageFilledRectangle. Резюме: 1. На текущей пакетной базе Сизифа не воспроизводится. 2. Даже если описанное поведение считать багом, это бага libgd, а не perl-GD. Для информации: в актуальной сборке libgd функция gdImageFilledRectangle содержит код для обмена местами координат, если они указаны в неправильном порядке: if (x1 > x2) { x = x1; x1 = x2; x2 = x; } if (y1 > y2) { y = y1; y1 = y2; y2 = y; } Этот код добавлен в libgd в CVS Revision 1.49.2.8, коммит от 6 мая 2007 года. >
> Резюме:
> 1. На текущей пакетной базе Сизифа не воспроизводится.
> 2. Даже если описанное поведение считать багом, это бага libgd, а не perl-GD.
У меня воспроизводится только на одном компьютере. Процессор я указал. Очень похоже нарвались на оптимизацию.
[user@server ~]$ rpm -qa | grep libgd
libgd2-2.0.34-alt2
(В ответ на комментарий №5)
> >
> > Резюме:
> > 1. На текущей пакетной базе Сизифа не воспроизводится.
> > 2. Даже если описанное поведение считать багом, это бага libgd, а не perl-GD.
>
> У меня воспроизводится только на одном компьютере. Процессор я указал. Очень
> похоже нарвались на оптимизацию.
> [user@server ~]$ rpm -qa | grep libgd
> libgd2-2.0.34-alt2
Да никакая оптимизация здесь ни при чем! Я же в предыдущем комментарии привёл исчерпывающую информацию! И процессор тут ни при чем!
Вы указали в примере когда прямоугольники не закрашиваются НЕВЕРНЫЕ параметры для функции. Код, который это проверяет и переставляет параметры в правильном порядке добавлен в libgd 6 мая 2007, а у Вас стоит пакет с версией libgd 2.0.34, которая вышла в феврале 2007!!
> Вы указали в примере когда прямоугольники не закрашиваются НЕВЕРНЫЕ параметры
> для функции. Код, который это проверяет и переставляет параметры в правильном
> порядке добавлен в libgd 6 мая 2007, а у Вас стоит пакет с версией libgd
> 2.0.34, которая вышла в феврале 2007!!
Ясно. Спасибо.
|