- int i,k;
- /* Traverse the first set and remove every element that is not member of the second set */
- for(i=0; i < set1->size; i++){
- if(set1->bitmap[i] != 0){
- for(k=0; k < BITS_INT; k++){
- if(_is_bit_set(k, set1->bitmap[i]) &&
- (i >= set2->size || !_is_bit_set(k,set2->bitmap[i]))){
- set1->elmcount--;
- _xbt_setset_elm_remove(set1->setset, i * BITS_INT + k);
- _unset_bit(i * BITS_INT + k, set1->bitmap);
- }
- }
- }
- }
+ int i;
+
+ for (i = 0; i < MIN(set1->size, set2->size); i++)
+ if (set1->bitmap[i] && set2->bitmap[i])
+ set1->bitmap[i] &= set2->bitmap[i];
+