bugfix [#22847] 18+ char Name in Edit Strip causes errors when duplicating strips

This commit is contained in:
Campbell Barton
2010-07-14 12:16:23 +00:00
parent 80355fd456
commit ae1748b984

View File

@@ -795,7 +795,7 @@ static void seqbase_unique_name(ListBase *seqbasep, SeqUniqueInfo *sui)
Sequence *seq;
for(seq=seqbasep->first; seq; seq= seq->next) {
if (sui->seq != seq && strcmp(sui->name_dest, seq->name+2)==0) {
sprintf(sui->name_dest, "%.18s.%03d", sui->name_src, sui->count++);
sprintf(sui->name_dest, "%.17s.%03d", sui->name_src, sui->count++); /*24 - 2 for prefix, -1 for \0 */
sui->match= 1; /* be sure to re-scan */
}
}
@@ -816,13 +816,18 @@ void seqbase_unique_name_recursive(ListBase *seqbasep, struct Sequence *seq)
strcpy(sui.name_src, seq->name+2);
strcpy(sui.name_dest, seq->name+2);
/* Strip off the suffix */
if ((dot=strrchr(sui.name_src, '.')))
*dot= '\0';
sui.count= 1;
sui.match= 1; /* assume the worst to start the loop */
/* Strip off the suffix */
if ((dot=strrchr(sui.name_src, '.'))) {
*dot= '\0';
dot++;
if(*dot)
sui.count= atoi(dot) + 1;
}
while(sui.match) {
sui.match= 0;
seqbase_unique_name(seqbasep, &sui);