История изменений
Исправление wandrien, (текущая версия) :
Я не знаю, как там что устроено в контейнерах из glib2, но есть подозрение, что с проверкой на NULL тут есть какая-то проблема с логикой.
Проблема с логикой возникнет в случае, если NULL будет сравниваться как не равный NULL. Кстати, в какую сторону вы будете его тогда делать не равным? NULL < NULL
или NULL > NULL
? И как отличить их между собой?
В этом случае будет нарушено фундаментальное условие для упорядочивания элементов:
Если a < b и b < c, то a < c.
В лучшем случае ваша программа зависнет или вылетит.
В худшем - позволит добавить в контейнер неограниченное количество элементов с ключом NULL, каждый из которых «не равен» предыдущему. При полной невозможности к этим элементам получить доступ по ключу.
Исправление wandrien, :
Я не знаю, как там что устроено в контейнерах из glib2, но есть подозрение, что с проверкой на NULL тут есть какая-то проблема с логикой.
Проблема с логикой возникнет в случае, если NULL будет сравниваться как не равный NULL. Кстати, в какую сторону вы будете его тогда делать не равным? NULL < NULL
или NULL > NULL
? И как отличить их между собой?
В этом случае будет нарушено фундаментальное условие для упорядочивания элементов:
Если a < b и b < c, то a < c.
В лучшем случае ваша программа зависнет или вылетит.
В худшем - позволит добавить в контейнер неограниченное количество элементов с ключом NULL, каждый из которых «не равен» предыдущему. При полной невозможности к этим элементам получить доступ.
Исходная версия wandrien, :
Я не знаю, как там что устроено в контейнерах из glib2, но есть подозрение, что с проверкой на NULL тут есть какая-то проблема с логикой.
Проблема с логикой возникнет в случае, если NULL сравниваться как не равный NULL. Кстати, в какую сторону вы будете его тогда делать не равным? NULL < NULL
или NULL > NULL
? И как отличить их между собой?
В этом случае будет нарушено фундаментальное условие для упорядочивания элементов:
Если a < b и b < c, то a < c.
В лучшем случае ваша программа зависнет или вылетит.
В худшем - позволит добавить в контейнер неограниченное количество элементов с ключом NULL, каждый из которых «не равен» предыдущему. При полной невозможности к этим элементам получить доступ.