From: Erik de C. L. <eri...@me...> - 2006-05-14 12:01:50
|
Howdy all, I've got a patch for a segfault I was seeing. Recreate the segfault as follows: - Start sweep and create a new file (length doesn't seem to matter). - Select the whole file (Ctrl-A). - Hit the record button to bring up the record dialog. - In the record dialog hit the record button, then the loop button (sweep should now being to record in the normal direction). - Now hit the reverse button and the sweep should start recording in reverse. - When sweep hits the zero time point where it should loop to the end of the file it will segfault instead. I'm not sure of the magic value of 1024 below. Feel free to pick a better number. Cheers, Erik --- sweep-SVN-374/src/head.c 2005-10-07 12:51:02.000000000 +1000 +++ sweep-SVN-374-hacked/src/head.c 2006-05-14 21:44:39.000000000 +1000 @@ -886,7 +886,13 @@ if (gl == NULL) { if (head->looping) { - head->offset = head->reverse ? sounddata->nr_frames : 0; + /* + ** I don't know if this is correct. Setting head->offset to + ** sounddata->nr_frames causes segfaults when recording in reverse + ** with looping on. + ** So, why 1024? I really don't know. It seems to work. + */ + head->offset = head->reverse ? sounddata->nr_frames - 1024 : 0; } else { head->going = FALSE; return written; -- +-----------------------------------------------------------+ Erik de Castro Lopo +-----------------------------------------------------------+ "Unix, is novice hostile... Windows, is expert hostile." -- BCS on digitalmars.D |