• Rafaël Carré's avatar
    Remove variable name clashes in TAB_REMOVE · 6be4754f
    Rafaël Carré authored
    If foo[i] or bar[i_index] are used in TAB_REMOVE / TAB_FIND, they will
    use another variable with local scope declared inside the macro.
    
    for (int i = 0; i < 1; i++) {
        TAB_REMOVE( count, array, foo[i] );
    }
    
    will expand to:
    
    for (int i = 0; i < 1; i++) {
        int i_index;
        .....
        for (int i = 0; i < count; i++)
            if (array[i] == foo[i])
            {
                index = i;
                break;
            }
        .....
    }
    
    And inner scope i is used to index foo, instead of the outer scope i
    which we would expect without knowing the content of the macro.
    (cherry picked from commit 728ef39d15cdbfc5b1bc9beba8a97493ef6c08fc)
    Signed-off-by: default avatarRémi Denis-Courmont <remi@remlab.net>
    6be4754f
vlmshell.c 54.4 KB