OK, tried this:
function color_bmap(COLOR* find_color)
{ BMAP* temp_bmap = bmap_createblack(744,600,32);
char* b1 = my_bmap.finalbits;
char* b2 = temp_bmap.finalbits;
int p;
bmap_lock(my_bmap,0);
bmap_lock(temp_bmap,0);
for(p=0;p<my_bmap.finalwidth*my_bmap.finalheight;p++)
if(b1[p*4]==find_color.blue&&b1[p*4+1]==find_color.green&&b1[p*4+2]==find_color.red)
{ b2[p*4] = 0;
b2[p*4+1] = 0;
b2[p*4+2] = 250;
b2[p*4+3] = 255;
}
bmap_unlock(temp_bmap);
bmap_unlock(campaignmap_lands_bmap);
}
The result is an engine crash. (The bmaps are the same size - both are 744x600)