use BLI_strncpy and BLI_snprintf when the size of the string is known.
[blender-staging.git] / source / blender / editors / transform / transform_constraints.c
index b88e57e186196ee530fa82b962ffea9dce3c3b39..bd34477c13f8b57043ed6ac61ce6b8aac72cd3ba 100644 (file)
@@ -59,6 +59,7 @@
 
 #include "BLI_math.h"
 #include "BLI_utildefines.h"
+#include "BLI_string.h"
 
 //#include "blendef.h"
 //
@@ -552,7 +553,7 @@ static void applyObjectConstraintRot(TransInfo *t, TransData *td, float vec[3],
 
 void setConstraint(TransInfo *t, float space[3][3], int mode, const char text[])
 {
-       strncpy(t->con.text + 1, text, 48);
+       BLI_strncpy(t->con.text + 1, text, sizeof(t->con.text) - 1);
        copy_m3_m3(t->con.mtx, space);
        t->con.mode = mode;
        getConstraintMatrix(t);
@@ -579,7 +580,7 @@ void setLocalConstraint(TransInfo *t, int mode, const char text[])
                        setConstraint(t, t->data->axismtx, mode, text);
                }
                else {
-                       strncpy(t->con.text + 1, text, 48);
+                       BLI_strncpy(t->con.text + 1, text, sizeof(t->con.text) - 1);
                        copy_m3_m3(t->con.mtx, t->data->axismtx);
                        t->con.mode = mode;
                        getConstraintMatrix(t);
@@ -598,7 +599,7 @@ void setLocalConstraint(TransInfo *t, int mode, const char text[])
 /*
        Set the constraint according to the user defined orientation
 
-       ftext is a format string passed to sprintf. It will add the name of
+       ftext is a format string passed to BLI_snprintf. It will add the name of
        the orientation where %s is (logically).
 */
 void setUserConstraint(TransInfo *t, short orientation, int mode, const char ftext[])
@@ -609,28 +610,28 @@ void setUserConstraint(TransInfo *t, short orientation, int mode, const char fte
        case V3D_MANIP_GLOBAL:
                {
                        float mtx[3][3]= MAT3_UNITY;
-                       sprintf(text, ftext, "global");
+                       BLI_snprintf(text, sizeof(text), ftext, "global");
                        setConstraint(t, mtx, mode, text);
                }
                break;
        case V3D_MANIP_LOCAL:
-               sprintf(text, ftext, "local");
+               BLI_snprintf(text, sizeof(text), ftext, "local");
                setLocalConstraint(t, mode, text);
                break;
        case V3D_MANIP_NORMAL:
-               sprintf(text, ftext, "normal");
+               BLI_snprintf(text, sizeof(text), ftext, "normal");
                setConstraint(t, t->spacemtx, mode, text);
                break;
        case V3D_MANIP_VIEW:
-               sprintf(text, ftext, "view");
+               BLI_snprintf(text, sizeof(text), ftext, "view");
                setConstraint(t, t->spacemtx, mode, text);
                break;
        case V3D_MANIP_GIMBAL:
-               sprintf(text, ftext, "gimbal");
+               BLI_snprintf(text, sizeof(text), ftext, "gimbal");
                setConstraint(t, t->spacemtx, mode, text);
                break;
        default: /* V3D_MANIP_CUSTOM */
-               sprintf(text, ftext, t->spacename);
+               BLI_snprintf(text, sizeof(text), ftext, t->spacename);
                setConstraint(t, t->spacemtx, mode, text);
                break;
        }
@@ -874,11 +875,11 @@ static void setNearestAxis2d(TransInfo *t)
        /* no correction needed... just use whichever one is lower */
        if ( abs(t->mval[0]-t->con.imval[0]) < abs(t->mval[1]-t->con.imval[1]) ) {
                t->con.mode |= CON_AXIS1;
-               sprintf(t->con.text, " along Y axis");
+               BLI_snprintf(t->con.text, sizeof(t->con.text), " along Y axis");
        }
        else {
                t->con.mode |= CON_AXIS0;
-               sprintf(t->con.text, " along X axis");
+               BLI_snprintf(t->con.text, sizeof(t->con.text), " along X axis");
        }
 }
 
@@ -929,31 +930,31 @@ static void setNearestAxis3d(TransInfo *t)
        if (len[0] <= len[1] && len[0] <= len[2]) {
                if (t->modifiers & MOD_CONSTRAINT_PLANE) {
                        t->con.mode |= (CON_AXIS1|CON_AXIS2);
-                       sprintf(t->con.text, " locking %s X axis", t->spacename);
+                       BLI_snprintf(t->con.text, sizeof(t->con.text), " locking %s X axis", t->spacename);
                }
                else {
                        t->con.mode |= CON_AXIS0;
-                       sprintf(t->con.text, " along %s X axis", t->spacename);
+                       BLI_snprintf(t->con.text, sizeof(t->con.text), " along %s X axis", t->spacename);
                }
        }
        else if (len[1] <= len[0] && len[1] <= len[2]) {
                if (t->modifiers & MOD_CONSTRAINT_PLANE) {
                        t->con.mode |= (CON_AXIS0|CON_AXIS2);
-                       sprintf(t->con.text, " locking %s Y axis", t->spacename);
+                       BLI_snprintf(t->con.text, sizeof(t->con.text), " locking %s Y axis", t->spacename);
                }
                else {
                        t->con.mode |= CON_AXIS1;
-                       sprintf(t->con.text, " along %s Y axis", t->spacename);
+                       BLI_snprintf(t->con.text, sizeof(t->con.text), " along %s Y axis", t->spacename);
                }
        }
        else if (len[2] <= len[1] && len[2] <= len[0]) {
                if (t->modifiers & MOD_CONSTRAINT_PLANE) {
                        t->con.mode |= (CON_AXIS0|CON_AXIS1);
-                       sprintf(t->con.text, " locking %s Z axis", t->spacename);
+                       BLI_snprintf(t->con.text, sizeof(t->con.text), " locking %s Z axis", t->spacename);
                }
                else {
                        t->con.mode |= CON_AXIS2;
-                       sprintf(t->con.text, " along %s Z axis", t->spacename);
+                       BLI_snprintf(t->con.text, sizeof(t->con.text), " along %s Z axis", t->spacename);
                }
        }
 }