fix [#27568] Segmentation fault in Sequencer when adding an effect strip with python
disallow negative length effect strips.
This commit is contained in:
@@ -3021,10 +3021,15 @@ void sequence_effect_speed_rebuild_map(Scene *scene, Sequence * seq, int force)
|
||||
/* if not already done, load / initialize data */
|
||||
get_sequence_effect(seq);
|
||||
|
||||
if (!(force || seq->len != v->length || !v->frameMap)) {
|
||||
if ( (force == FALSE) &&
|
||||
(seq->len == v->length) &&
|
||||
(v->frameMap != NULL)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
if (!seq->seq1) { /* make coverity happy and check for (CID 598)
|
||||
if ( (seq->seq1 == NULL) ||
|
||||
(seq->len < 1)
|
||||
) { /* make coverity happy and check for (CID 598)
|
||||
input strip ... */
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -587,8 +587,17 @@ void calc_sequence(Scene *scene, Sequence *seq)
|
||||
if (seq->seq1) {
|
||||
seq->start= seq->startdisp= MAX3(seq->seq1->startdisp, seq->seq2->startdisp, seq->seq3->startdisp);
|
||||
seq->enddisp= MIN3(seq->seq1->enddisp, seq->seq2->enddisp, seq->seq3->enddisp);
|
||||
/* we cant help if strips don't overlap, it wont give useful results.
|
||||
* but at least ensure 'len' is never negative which causes bad bugs elsewhere. */
|
||||
if(seq->enddisp < seq->startdisp) {
|
||||
/* simple start/end swap */
|
||||
seq->start= seq->enddisp;
|
||||
seq->enddisp = seq->startdisp;
|
||||
seq->startdisp= seq->start;
|
||||
}
|
||||
seq->len= seq->enddisp - seq->startdisp;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
calc_sequence_disp(scene, seq);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user