From b8ce3219eb2466cd67ed7cf5a832616c28d6d83c Mon Sep 17 00:00:00 2001 From: yohannd1 Date: Sun, 28 Sep 2025 19:55:46 -0300 Subject: [PATCH] channel drag copy: fix channel copying code (thanks tildearrow & eknous) --- src/engine/engine.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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)); } }