Well, personally i wouldn't mind keeping this -- at least it helps open file and likely reconfigure some armatures so they're not buggy again.
But not sure about how to fix that issue which lead to such a problem. Probably the only case is to ask users to try to reproduce the issue again. At least that's what we're doing when some meshes are corrupted.. On Mon, Jun 11, 2012 at 5:10 PM, Nicholas Bishop <[email protected]>wrote: > Makes sense. Do you reckon this is an acceptable hack for this > specific instance, or should I revert the commit? > > -Nicholas > > On Mon, Jun 11, 2012 at 7:04 AM, Sergey Sharybin <[email protected]> > wrote: > > Hey Nick! > > > > I've been thinking about such a fix, but that's not actually full fix. > > There're still lot's of places in blender who assumes > > def_nr is not negative. And the real fix would actually be to figure out > > why this index became negative due to it > > shouldn't actually. > > > > Checked the code, but can't find place where it could happen. > > > > On Mon, Jun 11, 2012 at 5:01 PM, Nicholas Bishop > > <[email protected]>wrote: > > > >> Revision: 47736 > >> > >> > http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47736 > >> Author: nicholasbishop > >> Date: 2012-06-11 11:00:58 +0000 (Mon, 11 Jun 2012) > >> Log Message: > >> ----------- > >> Fix invalid array index in armature_deform_verts(). > >> > >> Check that the def_nr is non-negative before using as index. > >> > >> Fixes bug [#31700] Crash when opening .blend file on 64bit environment > >> > >> Modified Paths: > >> -------------- > >> trunk/blender/source/blender/blenkernel/intern/armature.c > >> > >> Modified: trunk/blender/source/blender/blenkernel/intern/armature.c > >> =================================================================== > >> --- trunk/blender/source/blender/blenkernel/intern/armature.c > 2012-06-11 > >> 10:31:24 UTC (rev 47735) > >> +++ trunk/blender/source/blender/blenkernel/intern/armature.c > 2012-06-11 > >> 11:00:58 UTC (rev 47736) > >> @@ -986,7 +986,7 @@ > >> > >> for (j = dvert->totweight; j != 0; j--, dw++) { > >> const int index = dw->def_nr; > >> - if (index < defbase_tot && (pchan = > >> defnrToPC[index])) { > >> + if (index >= 0 && index < defbase_tot && > >> (pchan = defnrToPC[index])) { > >> float weight = dw->weight; > >> Bone *bone = pchan->bone; > >> pdef_info = pdef_info_array + > >> defnrToPCIndex[index]; > >> > >> _______________________________________________ > >> Bf-blender-cvs mailing list > >> [email protected] > >> http://lists.blender.org/mailman/listinfo/bf-blender-cvs > >> > > > > > > > > -- > > With best regards, Sergey Sharybin > > _______________________________________________ > > Bf-committers mailing list > > [email protected] > > http://lists.blender.org/mailman/listinfo/bf-committers > _______________________________________________ > Bf-committers mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-committers > -- With best regards, Sergey Sharybin _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
