diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-04-07 20:37:55 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-04-07 20:37:55 +0400 |
commit | 7018345beecf0163ccae9077c150e7b74610a852 (patch) | |
tree | 7556fb4ab369ef259be5aa271c10a679600ecd79 /source/blender/blenkernel/intern/movieclip.c | |
parent | a955a863356710acecce38ac3114245995604d06 (diff) |
Fixed deadlock on loading file without number group into movie clip editor
Diffstat (limited to 'source/blender/blenkernel/intern/movieclip.c')
-rw-r--r-- | source/blender/blenkernel/intern/movieclip.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c index e375262c045..4ba33a74373 100644 --- a/source/blender/blenkernel/intern/movieclip.c +++ b/source/blender/blenkernel/intern/movieclip.c @@ -80,7 +80,7 @@ /*********************** movieclip buffer loaders *************************/ -static int sequence_guess_offset(const char *full_name, int head_len, int numlen) +static int sequence_guess_offset(const char *full_name, int head_len, unsigned short numlen) { char num[FILE_MAX] = {0}; @@ -273,17 +273,26 @@ static void movieclip_calc_length(MovieClip *clip) } else if (clip->source == MCLIP_SRC_SEQUENCE) { int framenr = 1; - char name[FILE_MAX]; + short numlen; + char name[FILE_MAX], head[FILE_MAX], tail[FILE_MAX]; - for (;;) { - get_sequence_fname(clip, framenr, name); + BLI_stringdec(clip->name, head, tail, &numlen); - if (!BLI_exists(name)) { - clip->len = framenr + 1; - break; - } + if (numlen == 0) { + /* there's no number group in file name, assume it's single framed sequence */ + clip->len = framenr + 1; + } + else { + for (;;) { + get_sequence_fname(clip, framenr, name); - framenr++; + if (!BLI_exists(name)) { + clip->len = framenr + 1; + break; + } + + framenr++; + } } } } |