commit:     023d4496ef445a2f6f05b9c288e9816695d6daf4
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sat Oct  9 12:12:11 2021 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sat Oct  9 12:12:11 2021 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=023d4496

libq/atom: perform correct SUBSLOT matching in compare

fixup after ef14d5f7bb09b8a90e827262798ebd1fde58913a
now SUBSLOT is never NULL, ensure we check it was explicitly set or not,
which is what used to be NULL.

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 libq/atom.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/libq/atom.c b/libq/atom.c
index 9a51e22..0b5fcdd 100644
--- a/libq/atom.c
+++ b/libq/atom.c
@@ -572,7 +572,9 @@ atom_compare_flg(const depend_atom *data, const depend_atom 
*query, int flags)
                        if (query->SLOT == NULL && data->SLOT == NULL)
                                return NOT_EQUAL;
                        if (query->SLOT != NULL) {
-                               if (query->SUBSLOT == NULL || flags & 
ATOM_COMP_NOSUBSLOT) {
+                               if (query->SUBSLOT == query->SLOT ||
+                                               flags & ATOM_COMP_NOSUBSLOT)
+                               {
                                        /* ^perl:0 -> match different SLOT */
                                        if (data->SLOT == NULL ||
                                                        strcmp(query->SLOT, 
data->SLOT) == 0)
@@ -583,7 +585,7 @@ atom_compare_flg(const depend_atom *data, const depend_atom 
*query, int flags)
                                                        strcmp(query->SLOT, 
data->SLOT) != 0)
                                                return NOT_EQUAL;
                                        if (!(flags & ATOM_COMP_NOSUBSLOT))
-                                               if (data->SUBSLOT == NULL ||
+                                               if (data->SUBSLOT == 
query->SLOT ||
                                                                
strcmp(query->SUBSLOT, data->SUBSLOT) == 0)
                                                        return NOT_EQUAL;
                                }
@@ -601,8 +603,8 @@ atom_compare_flg(const depend_atom *data, const depend_atom 
*query, int flags)
                                if (bl_op == ATOM_BL_NONE)
                                        return NOT_EQUAL;
                        } else if (!(flags & ATOM_COMP_NOSUBSLOT)) {
-                               if (query->SUBSLOT != NULL) {
-                                       if (data->SUBSLOT == NULL) {
+                               if (query->SUBSLOT != query->SLOT) {
+                                       if (data->SUBSLOT == data->SLOT) {
                                                if (bl_op == ATOM_BL_NONE)
                                                        return NOT_EQUAL;
                                        } else {

Reply via email to