Bug 18493

Summary: Проблема со сравнением версий содержащих буквы
Product: Sisyphus Reporter: Kirill A. Shutemov <kas>
Component: librpmAssignee: placeholder <placeholder>
Status: ASSIGNED --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: arseny, dottedmag, erthad, glebfm, imz, ldv, led, n3npq, placeholder, vt
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
fix for rpmvercmp none

Description Kirill A. Shutemov 2009-01-12 22:57:19 MSK
Created attachment 3212 [details]
fix for rpmvercmp

Словил забавный баг(фичу?) в rpmvercmp. Есть две версии "1.a" и "1a". 
rpmvercmp считает их равными! 

rpm сравнивает эти версии следующим образом (упрощено):

1. Отбрасывает из начала обоих строк символы не являющиеся буквами или
   цифрами (!isalnum) в начале строк. В данном случае в обоих строках 
   таких символов нет.
2. Выбирает из обоих строк максимальное количество количество цифр и
   сравнивает, как числа. 1 == 1, т.е. на данном этапе версии равны.
3. Далее сравнивает оставшиеся части версий: ".a" и "a".
4. Тут цикл начинается с начала. Опять отбрасываются все символы не
   являющиеся буквами и цифрами. Остаётся "a" и "a". Они, очевидно,
   являются равными.

Я считаю такое поведение ошибочным. Отбрасывать символы не являющиеся
буквами или цифрами следует только, если в обоих строках они есть.
Как вы считаете?
Comment 1 Dmitry V. Levin 2009-02-14 02:26:34 MSK
Вроде бы все считают, что надо этот патч приложить.
Comment 2 led 2009-02-14 04:07:35 MSK
(В ответ на комментарий №1)
> Вроде бы все считают, что надо этот патч приложить.

Исправлять нужно, но ИМХО не этим патчем.
Comment 3 Kirill A. Shutemov 2009-02-14 08:43:37 MSK
А что с этим патчем не так?
Comment 4 at@altlinux.org 2009-02-17 09:07:12 MSK
А какая версия должна быть больше, 1a или 1.a?
Нет ответа => лучше не патчить.
Comment 5 Mikhail Gusarov 2009-02-17 09:31:17 MSK
Очевидно, что 1a > 1.a.
Comment 6 Jeff Johnson 2012-01-03 03:34:59 MSK
tracked at https://bugs.launchpad.net/rpm/+bug/911038