Remove variable name clashes in TAB_REMOVE
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: Rémi Denis-Courmont <remi@remlab.net>
Showing
Please register or sign in to comment