diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 10f33cd33..3dd9d85c1 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -612,8 +612,16 @@ void DivEngine::copyChannel(int src, int dest) { for (int i=0; iord[dest][i]=curOrders->ord[src][i]; - if (curPat[src].data[i]!=NULL && curPat[dest].data[i]!=NULL) { - curPat[src].data[i]->copyOn(curPat[dest].data[i]); + + DivPattern* srcPat=curPat[src].data[i]; + DivPattern* destPat=curPat[dest].data[i]; + if (srcPat==NULL) { + if (destPat!=NULL) { + delete destPat; + curPat[dest].data[i]=NULL; + } + } else { + curPat[src].data[i]->copyOn(curPat[dest].getPattern(i, true)); } }