Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-11-07 12:33:10 +0300
committerCampbell Barton <ideasman42@gmail.com>2010-11-07 12:33:10 +0300
commited61900e5e5ccb972a5bf63c9301d0669f1e8941 (patch)
tree06f9b302bdb5b370d60db61abffbb85303b153c0 /source/blender/blenlib
parent20b16e4074eb0b015a94bd5738c76dafaca250db (diff)
- avoid loop within loop for unique naming function (even though it wasnt likely to run often).
- off by 1 error with outliner naming length. was 1 too short.
Diffstat (limited to 'source/blender/blenlib')
-rw-r--r--source/blender/blenlib/intern/path_util.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c
index fffc74e822a..a496e6c50e9 100644
--- a/source/blender/blenlib/intern/path_util.c
+++ b/source/blender/blenlib/intern/path_util.c
@@ -205,10 +205,12 @@ int BLI_uniquename_cb(int (*unique_check)(void *, const char *), void *arg, cons
char left[UNIQUE_NAME_MAX];
int number;
int len= BLI_split_name_num(left, &number, name, delim);
- do { /* nested while loop looks bad but likely it wont run most times */
- while(BLI_snprintf(tempname, name_len, "%s%c%03d", left, delim, number) >= name_len) {
- if(len > 0) left[--len]= '\0'; /* word too long */
- else number= 0; /* reset, must be a massive number */
+ do {
+ int newlen= BLI_snprintf(tempname, name_len, "%s%c%03d", left, delim, number);
+ if(newlen >= name_len) {
+ len -= ((newlen + 1) - name_len);
+ if(len < 0) len= number= 0;
+ left[len]= '\0';
}
} while(number++, unique_check(arg, tempname));