Revision: 37220 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37220 Author: jwilkins Date: 2011-06-05 19:57:11 +0000 (Sun, 05 Jun 2011) Log Message: ----------- Warning fix and some paranoia
map_insert_vert stores vertex indexes in a hash table, it uses the sign to indicate the type of vertex, the original index as unsigned, the conversion to a negative number caused a warning, this fixes it by explicitly casting to int, added an assertion that the index can't be greater than INT_MAX because that would be too big to distinguish it uses sign and it is undefined to cast unsigned to sign if the unsigned number is too big. TODO: assert technically isn't enough because this check needs to be done in release code, although practically it is actually too much since it is unlikely we will be dealing with 2 billion vertexes any time soon, hence, paranoia Modified Paths: -------------- branches/soc-2011-onion/source/blender/blenlib/intern/pbvh.c Modified: branches/soc-2011-onion/source/blender/blenlib/intern/pbvh.c =================================================================== --- branches/soc-2011-onion/source/blender/blenlib/intern/pbvh.c 2011-06-05 18:58:22 UTC (rev 37219) +++ branches/soc-2011-onion/source/blender/blenlib/intern/pbvh.c 2011-06-05 19:57:11 UTC (rev 37220) @@ -350,15 +350,17 @@ if(!BLI_ghash_haskey(map, key)) { if(BLI_bitmap_get(bvh->vert_bitmap, vertex)) { - value = SET_INT_IN_POINTER(-(*face_verts) - 1); // XXX: MSVC says, warning C4146: unary minus operator applied to unsigned type, result still unsigned + assert(*face_verts < (unsigned)INT_MAX); // results of casting unsigned to signed is undefined + value = SET_INT_IN_POINTER(-(int)(*face_verts) - 1); ++(*face_verts); } else { + assert(*uniq_verts < (unsigned)INT_MAX); // results of casting unsigned to signed is undefined BLI_bitmap_set(bvh->vert_bitmap, vertex); - value = SET_INT_IN_POINTER(*uniq_verts); + value = SET_INT_IN_POINTER((int)*uniq_verts); ++(*uniq_verts); } - + BLI_ghash_insert(map, key, value); return GET_INT_FROM_POINTER(value); } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs