[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12395] trunk/blender/source/blender: fix for valgrind warning - strcpy was trying to copy to/ from the same value (aparently this can corrupt the value in some cases)
Campbell Barton
cbarton at metavr.com
Thu Oct 25 22:30:18 CEST 2007
Revision: 12395
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12395
Author: campbellbarton
Date: 2007-10-25 22:30:18 +0200 (Thu, 25 Oct 2007)
Log Message:
-----------
fix for valgrind warning - strcpy was trying to copy to/from the same value (aparently this can corrupt the value in some cases)
Fixed problem where hidden curve handles could still be transformed.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/blender.c
trunk/blender/source/blender/src/transform_conversions.c
Modified: trunk/blender/source/blender/blenkernel/intern/blender.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/blender.c 2007-10-25 19:25:42 UTC (rev 12394)
+++ trunk/blender/source/blender/blenkernel/intern/blender.c 2007-10-25 20:30:18 UTC (rev 12395)
@@ -409,8 +409,9 @@
/* there's an onload scriptlink to execute in screenmain */
mainqenter(ONLOAD_SCRIPT, 1);
}
-
- strcpy(G.sce, filename);
+ if (G.sce != filename) /* these are the same at times, should never copy to the same location */
+ strcpy(G.sce, filename);
+
strcpy(G.main->name, filename); /* is guaranteed current file */
MEM_freeN(bfd);
Modified: trunk/blender/source/blender/src/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/src/transform_conversions.c 2007-10-25 19:25:42 UTC (rev 12394)
+++ trunk/blender/source/blender/src/transform_conversions.c 2007-10-25 20:30:18 UTC (rev 12395)
@@ -1137,10 +1137,15 @@
if((nu->type & 7)==CU_BEZIER) {
for(a=0, bezt= nu->bezt; a<nu->pntsu; a++, bezt++) {
if(bezt->hide==0) {
- if(bezt->f1 & 1) countsel++;
- if(bezt->f2 & 1) countsel++;
- if(bezt->f3 & 1) countsel++;
- if(propmode) count+= 3;
+ if (G.f & G_HIDDENHANDLES) {
+ if(bezt->f2 & 1) countsel+=3;
+ if(propmode) count+= 3;
+ } else {
+ if(bezt->f1 & 1) countsel++;
+ if(bezt->f2 & 1) countsel++;
+ if(bezt->f3 & 1) countsel++;
+ if(propmode) count+= 3;
+ }
}
}
}
@@ -1170,11 +1175,15 @@
head = tail = td;
for(a=0, bezt= nu->bezt; a<nu->pntsu; a++, bezt++) {
if(bezt->hide==0) {
- if(propmode || (bezt->f1 & 1)) {
+
+ if( propmode ||
+ ((bezt->f2 & 1) && (G.f & G_HIDDENHANDLES)) ||
+ ((bezt->f1 & 1) && (G.f & G_HIDDENHANDLES)==0)
+ ) {
VECCOPY(td->iloc, bezt->vec[0]);
td->loc= bezt->vec[0];
VECCOPY(td->center, bezt->vec[1]);
- if(bezt->f1 & 1) td->flag= TD_SELECTED;
+ if(bezt->f1 & 1 || G.f & G_HIDDENHANDLES) td->flag= TD_SELECTED;
else td->flag= 0;
td->ext = NULL;
td->tdi = NULL;
@@ -1187,7 +1196,8 @@
count++;
tail++;
}
- /* THIS IS THE CV, the other two are handles */
+
+ /* This is the Curve Point, the other two are handles */
if(propmode || (bezt->f2 & 1)) {
VECCOPY(td->iloc, bezt->vec[1]);
td->loc= bezt->vec[1];
@@ -1197,12 +1207,14 @@
td->ext = NULL;
td->tdi = NULL;
- if (t->mode==TFM_CURVE_SHRINKFATTEN) {
+ if (t->mode==TFM_CURVE_SHRINKFATTEN) { /* || t->mode==TFM_RESIZE) {*/ /* TODO - make points scale */
td->val = &(bezt->radius);
td->ival = bezt->radius;
- } else {
+ } else if (t->mode==TFM_TILT) {
td->val = &(bezt->alfa);
td->ival = bezt->alfa;
+ } else {
+ td->val = NULL;
}
Mat3CpyMat3(td->smtx, smtx);
@@ -1212,11 +1224,14 @@
count++;
tail++;
}
- if(propmode || (bezt->f3 & 1)) {
+ if( propmode ||
+ ((bezt->f1 & 1) && (G.f & G_HIDDENHANDLES)) ||
+ ((bezt->f3 & 1) && (G.f & G_HIDDENHANDLES)==0)
+ ) {
VECCOPY(td->iloc, bezt->vec[2]);
td->loc= bezt->vec[2];
VECCOPY(td->center, bezt->vec[1]);
- if(bezt->f3 & 1) td->flag= TD_SELECTED;
+ if(bezt->f3 & 1 || (G.f & G_HIDDENHANDLES)) td->flag= TD_SELECTED;
else td->flag= 0;
td->ext = NULL;
td->tdi = NULL;
@@ -1252,7 +1267,7 @@
td->ext = NULL;
td->tdi = NULL;
- if (t->mode==TFM_CURVE_SHRINKFATTEN) {
+ if (t->mode==TFM_CURVE_SHRINKFATTEN || t->mode==TFM_RESIZE) {
td->val = &(bp->radius);
td->ival = bp->radius;
} else {
More information about the Bf-blender-cvs
mailing list