First, this code from style.c generates a warning:

        if (SID_GET_HAS_NAME(s_id) && (fw->style_name == NULL &&
            (matchWildcards(SID_GET_NAME(s_id), fw->class.res_class) == TRUE ||
             matchWildcards(SID_GET_NAME(s_id), fw->class.res_name) == TRUE ||
             matchWildcards(SID_GET_NAME(s_id), fw->name.name) == TRUE)) ||
            matchWildcards(SID_GET_NAME(s_id), fw->style_name ) == TRUE)
        {
                return True;
        }

style.c: In function `fw_match_style_id':
style.c:176: warning: suggest parentheses around && within ||

Second, the code may access a NULL pointer style_name if neither
of the first three matchWildcards is true.

Also, I think even if style_name is not NULL, the usual style name
matching should be done:

        if (SID_GET_HAS_NAME(s_id))
        {
                if (matchWildcards(SID_GET_NAME(s_id), fw->class.res_class) == 
TRUE)
                {
                        return True;
                }
                if (matchWildcards(SID_GET_NAME(s_id), fw->class.res_name) == 
TRUE)
                {
                        return True;
                }
                if (matchWildcards(SID_GET_NAME(s_id), fw->name.name) == TRUE)
                {
                        return True;
                }
                if (fw->style_name == NULL &&
                    matchWildcards(SID_GET_NAME(s_id), fw->class.res_class) == 
TRUE)
                {
                        return True;
                }
        }

(I have committed this code to CVS, but feel free to change it).

Ciao

Dominik ^_^  ^_^

 --
Dominik Vogt, [EMAIL PROTECTED]

Attachment: signature.asc
Description: Digital signature

Reply via email to