LINUX.ORG.RU

История изменений

Исправление 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, каждый из которых «не равен» предыдущему. При полной невозможности к этим элементам получить доступ.