[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37172] trunk/blender/source/blender/ blenkernel/intern: fix [#27568] Segmentation fault in Sequencer when adding an effect strip with python
Campbell Barton
ideasman42 at gmail.com
Sat Jun 4 12:39:04 CEST 2011
Revision: 37172
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37172
Author: campbellbarton
Date: 2011-06-04 10:39:04 +0000 (Sat, 04 Jun 2011)
Log Message:
-----------
fix [#27568] Segmentation fault in Sequencer when adding an effect strip with python
disallow negative length effect strips.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/seqeffects.c
trunk/blender/source/blender/blenkernel/intern/sequencer.c
Modified: trunk/blender/source/blender/blenkernel/intern/seqeffects.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/seqeffects.c 2011-06-04 08:09:34 UTC (rev 37171)
+++ trunk/blender/source/blender/blenkernel/intern/seqeffects.c 2011-06-04 10:39:04 UTC (rev 37172)
@@ -3021,10 +3021,15 @@
/* 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;
}
Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c 2011-06-04 08:09:34 UTC (rev 37171)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c 2011-06-04 10:39:04 UTC (rev 37172)
@@ -587,8 +587,17 @@
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);
}
More information about the Bf-blender-cvs
mailing list