[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33492] trunk/blender/source/blender: use BLI_strnlen rather then strlen when comparing against fixed lengths.

Campbell Barton ideasman42 at gmail.com
Mon Dec 6 00:50:55 CET 2010


Revision: 33492
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33492
Author:   campbellbarton
Date:     2010-12-06 00:50:55 +0100 (Mon, 06 Dec 2010)

Log Message:
-----------
use BLI_strnlen rather then strlen when comparing against fixed lengths.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/exotic.c
    trunk/blender/source/blender/blenkernel/intern/ipo.c
    trunk/blender/source/blender/blenlib/intern/path_util.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/interface/interface.c
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    trunk/blender/source/blender/editors/interface/interface_icons.c
    trunk/blender/source/blender/editors/physics/physics_fluid.c
    trunk/blender/source/blender/makesrna/intern/rna_ID.c
    trunk/blender/source/blender/python/generic/IDProp.c

Modified: trunk/blender/source/blender/blenkernel/intern/exotic.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/exotic.c	2010-12-05 23:14:48 UTC (rev 33491)
+++ trunk/blender/source/blender/blenkernel/intern/exotic.c	2010-12-05 23:50:55 UTC (rev 33492)
@@ -1171,10 +1171,10 @@
 		*o = add_object(scene, OB_MESH);
 		ob = *o;
 		
-		if (strlen(entname)) new_id(&G.main->object, (ID *)ob, entname);
-		else if (strlen(layname)) new_id(&G.main->object, (ID *)ob,  layname);
+		if (entname[0]) new_id(&G.main->object, (ID *)ob, entname);
+		else if (layname[0]) new_id(&G.main->object, (ID *)ob,  layname);
 
-		if (strlen(layname)) ob->lay= dxf_get_layer_num(scene, layname);
+		if (layname[0]) ob->lay= dxf_get_layer_num(scene, layname);
 		else ob->lay= scene->lay;
 		// not nice i know... but add_object() sets active base, which needs layer setting too (ton)
 		scene->basact->lay= ob->lay;
@@ -1193,8 +1193,8 @@
 		
 		((ID *)me)->us=0;
 
-		if (strlen(entname)) new_id(&G.main->mesh, (ID *)me, entname);
-		else if (strlen(layname)) new_id(&G.main->mesh, (ID *)me, layname);
+		if (entname[0]) new_id(&G.main->mesh, (ID *)me, entname);
+		else if (layname[0]) new_id(&G.main->mesh, (ID *)me, layname);
 
 		vcenter = zerovec;
 	}
@@ -2395,7 +2395,7 @@
 							I leave it commented out here as warning (ton) */
 						//for (i=0; i<ob->totcol; i++) ob->mat[i]= ((Mesh*)ob->data)->mat[i];
 						
-						if (strlen(layname)) ob->lay= dxf_get_layer_num(scene, layname);
+						if (layname[0]) ob->lay= dxf_get_layer_num(scene, layname);
 						else ob->lay= scene->lay;
 	
 						/* link to scene */

Modified: trunk/blender/source/blender/blenkernel/intern/ipo.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/ipo.c	2010-12-05 23:14:48 UTC (rev 33491)
+++ trunk/blender/source/blender/blenkernel/intern/ipo.c	2010-12-05 23:50:55 UTC (rev 33492)
@@ -1197,7 +1197,7 @@
 				fcurve= fcu;
 				
 			/* set path */
-			fcurve->rna_path= BLI_strdupn(abp->path, strlen(abp->path));
+			fcurve->rna_path= BLI_strdup(abp->path);
 			fcurve->array_index= abp->array_index;
 			
 			/* convert keyframes 

Modified: trunk/blender/source/blender/blenlib/intern/path_util.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/path_util.c	2010-12-05 23:14:48 UTC (rev 33491)
+++ trunk/blender/source/blender/blenlib/intern/path_util.c	2010-12-05 23:50:55 UTC (rev 33492)
@@ -418,8 +418,8 @@
 	/* also bail out if relative path is not set */
 	if (relfile[0] == 0) return;
 
-#ifdef WIN32 
-	if (strlen(relfile) > 2 && relfile[1] != ':') {
+#ifdef WIN32
+	if (BLI_strnlen(relfile, 3) > 2 && relfile[1] != ':') {
 		char* ptemp;
 		/* fix missing volume name in relative base,
 		   can happen with old recent-files.txt files */
@@ -433,7 +433,7 @@
 		BLI_strncpy(temp, relfile, FILE_MAXDIR + FILE_MAXFILE);
 	}
 
-	if (strlen(file) > 2) {
+	if (BLI_strnlen(file, 3) > 2) {
 		if ( temp[1] == ':' && file[1] == ':' && temp[0] != file[0] )
 			return;
 	}
@@ -1181,8 +1181,9 @@
 void BLI_clean(char *path)
 {
 	if(path==0) return;
+
 #ifdef WIN32
-	if(path && strlen(path)>2) {
+	if(path && BLI_strnlen(path, 3) > 2) {
 		BLI_char_switch(path+2, '/', '\\');
 	}
 #else
@@ -1271,7 +1272,7 @@
 	}
 #ifdef WIN32
 	else {
-		if (strlen(dir) >= 2 && dir[1] == ':' ) {
+		if (BLI_strnlen(dir, 3) >= 2 && dir[1] == ':' ) {
 			BLI_strncpy(string, dir, 3);
 			dir += 2;
 		}

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2010-12-05 23:14:48 UTC (rev 33491)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2010-12-05 23:50:55 UTC (rev 33492)
@@ -9492,7 +9492,7 @@
 			for(act= ob->actuators.first; act; act= act->next) {
 				if (act->type == ACT_MESSAGE) {
 					bMessageActuator *msgAct = (bMessageActuator *) act->data;
-					if (strlen(msgAct->toPropName) > 2) {
+					if (BLI_strnlen(msgAct->toPropName, 3) > 2) {
 						/* strip first 2 chars, would have only worked if these were OB anyway */
 						memmove( msgAct->toPropName, msgAct->toPropName+2, sizeof(msgAct->toPropName)-2 );
 					} else {

Modified: trunk/blender/source/blender/editors/interface/interface.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface.c	2010-12-05 23:14:48 UTC (rev 33491)
+++ trunk/blender/source/blender/editors/interface/interface.c	2010-12-05 23:50:55 UTC (rev 33492)
@@ -2357,7 +2357,7 @@
 static uiBut *ui_def_but(uiBlock *block, int type, int retval, const char *str, short x1, short y1, short x2, short y2, void *poin, float min, float max, float a1, float a2, const char *tip)
 {
 	uiBut *but;
-	short slen;
+	int slen;
 	
 	if(type & BUTPOIN) {		/* a pointer is required */
 		if(poin==NULL)
@@ -2374,14 +2374,16 @@
 	but->iconadd=0;
 
 	but->retval= retval;
-	if( strlen(str)>=UI_MAX_NAME_STR-1 ) {
-		but->str= MEM_callocN( strlen(str)+2, "uiDefBut");
-		strcpy(but->str, str);
+
+	slen= strlen(str);
+	if(slen >= UI_MAX_NAME_STR-1) {
+		but->str= MEM_mallocN(slen+2, "ui_def_but str"); /* why +2 ? */
 	}
 	else {
 		but->str= but->strdata;
-		strcpy(but->str, str);
 	}
+	memcpy(but->str, str, slen+1);
+
 	but->x1= x1; 
 	but->y1= y1;
 	but->x2= (x1+x2); 

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-12-05 23:14:48 UTC (rev 33491)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2010-12-05 23:50:55 UTC (rev 33492)
@@ -1316,10 +1316,11 @@
 		} else {
 			if(select) {
 				/* make a selection, starting from the cursor position */
+				int tlen;
 				but->selsta = but->pos;
 				
 				but->pos++;
-				if(but->pos>strlen(str)) but->pos= strlen(str);
+				if(but->pos > (tlen= strlen(str))) but->pos= tlen;
 				
 				but->selend = but->pos;
 			} else if(jump) {
@@ -1331,8 +1332,9 @@
 					if(test_special_char(str[but->pos])) break;
 				}
 			} else {
+				int tlen;
 				but->pos++;
-				if(but->pos>strlen(str)) but->pos= strlen(str);
+				if(but->pos > (tlen= strlen(str))) but->pos= tlen;
 			}
 		}
 	}

Modified: trunk/blender/source/blender/editors/interface/interface_icons.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_icons.c	2010-12-05 23:14:48 UTC (rev 33491)
+++ trunk/blender/source/blender/editors/interface/interface_icons.c	2010-12-05 23:50:55 UTC (rev 33492)
@@ -507,7 +507,7 @@
 	int x, y, icontype;
 	char iconfilestr[FILE_MAXDIR+FILE_MAXFILE];
 	
-	if ((btheme!=NULL) && (strlen(btheme->tui.iconfile) > 0)) {
+	if ((btheme!=NULL) && btheme->tui.iconfile[0]) {
 		char *datadir= BLI_get_folder(BLENDER_DATAFILES, NULL);
 		if (datadir) {
 			BLI_make_file_string("/", iconfilestr, datadir, btheme->tui.iconfile);

Modified: trunk/blender/source/blender/editors/physics/physics_fluid.c
===================================================================
--- trunk/blender/source/blender/editors/physics/physics_fluid.c	2010-12-05 23:14:48 UTC (rev 33491)
+++ trunk/blender/source/blender/editors/physics/physics_fluid.c	2010-12-05 23:50:55 UTC (rev 33492)
@@ -665,7 +665,7 @@
 		// invalid dir, reset to current/previous
 		strcpy(blendDir, G.main->name);
 		BLI_splitdirstring(blendDir, blendFile);
-		if(strlen(blendFile)>6){
+		if(BLI_strnlen(blendFile, 7) > 6){
 			int len = strlen(blendFile);
 			if( (blendFile[len-6]=='.')&& (blendFile[len-5]=='b')&& (blendFile[len-4]=='l')&&
 			   (blendFile[len-3]=='e')&& (blendFile[len-2]=='n')&& (blendFile[len-1]=='d') ){

Modified: trunk/blender/source/blender/makesrna/intern/rna_ID.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_ID.c	2010-12-05 23:14:48 UTC (rev 33491)
+++ trunk/blender/source/blender/makesrna/intern/rna_ID.c	2010-12-05 23:50:55 UTC (rev 33492)
@@ -223,8 +223,8 @@
 	 * just a char pointer, but take care here, also be careful that python
 	 * owns the string pointer which it could potentually free while blender
 	 * is running. */
-	if(strlen(identifier) >= sizeof(((IDProperty *)NULL)->name)) {
-		BKE_reportf(reports, RPT_ERROR, "registering id property class: '%s' is too long, maximum length is %d.", identifier, (int)sizeof(((IDProperty *)NULL)->name));
+	if(BLI_strnlen(identifier, MAX_IDPROP_NAME) == MAX_IDPROP_NAME) {
+		BKE_reportf(reports, RPT_ERROR, "registering id property class: '%s' is too long, maximum length is " STRINGIFY(MAX_IDPROP_NAME) ".", identifier);
 		return NULL;
 	}
 

Modified: trunk/blender/source/blender/python/generic/IDProp.c
===================================================================
--- trunk/blender/source/blender/python/generic/IDProp.c	2010-12-05 23:14:48 UTC (rev 33491)
+++ trunk/blender/source/blender/python/generic/IDProp.c	2010-12-05 23:50:55 UTC (rev 33492)
@@ -23,9 +23,11 @@
  * ***** END GPL LICENSE BLOCK *****
  */
 
+#include "IDProp.h"
+
 #include "BKE_idprop.h"
 #include "BKE_utildefines.h"
-#include "IDProp.h"
+#include "BLI_string.h"
 #include "MEM_guardedalloc.h"
 
 #define USE_STRING_COERCE
@@ -192,7 +194,7 @@
 	}
 
 	st = _PyUnicode_AsString(value);
-	if (strlen(st) >= MAX_IDPROP_NAME) {
+	if (BLI_strnlen(st, MAX_IDPROP_NAME) == MAX_IDPROP_NAME) {
 		PyErr_SetString(PyExc_TypeError, "string length cannot exceed 31 characters!");
 		return -1;
 	}





More information about the Bf-blender-cvs mailing list