XM import: fix infinite loop
This commit is contained in:
parent
691336a9ce
commit
0efe8a1320
|
@ -525,6 +525,7 @@ bool DivEngine::loadXM(unsigned char* file, size_t len) {
|
||||||
|
|
||||||
if (volType&1) {
|
if (volType&1) {
|
||||||
// add fade-out
|
// add fade-out
|
||||||
|
if (volFade!=0) {
|
||||||
int cur=64;
|
int cur=64;
|
||||||
if (ins->std.volMacro.len>0) {
|
if (ins->std.volMacro.len>0) {
|
||||||
cur=ins->std.volMacro.val[ins->std.volMacro.len-1];
|
cur=ins->std.volMacro.val[ins->std.volMacro.len-1];
|
||||||
|
@ -535,11 +536,16 @@ bool DivEngine::loadXM(unsigned char* file, size_t len) {
|
||||||
if (ins->std.volMacro.len<255) {
|
if (ins->std.volMacro.len<255) {
|
||||||
ins->std.volMacro.val[ins->std.volMacro.len++]=0;
|
ins->std.volMacro.val[ins->std.volMacro.len++]=0;
|
||||||
}
|
}
|
||||||
|
if (ins->std.volMacro.rel<ins->std.volMacro.len && ins->std.volMacro.rel<ins->std.volMacro.loop) {
|
||||||
|
ins->std.volMacro.loop=255;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// add a one-tick macro to make note release happy
|
// add a one-tick macro to make note release happy
|
||||||
ins->std.volMacro.val[0]=64;
|
ins->std.volMacro.val[0]=64;
|
||||||
ins->std.volMacro.val[1]=0;
|
ins->std.volMacro.val[1]=0;
|
||||||
ins->std.volMacro.rel=0;
|
ins->std.volMacro.rel=0;
|
||||||
|
ins->std.volMacro.loop=255;
|
||||||
ins->std.volMacro.len=2;
|
ins->std.volMacro.len=2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue