diff --git a/src/gui/doAction.cpp b/src/gui/doAction.cpp index 28f6cf882..4020dfc7b 100644 --- a/src/gui/doAction.cpp +++ b/src/gui/doAction.cpp @@ -18,6 +18,7 @@ */ #include "gui.h" +#include "../ta-log.h" #include #include @@ -712,6 +713,9 @@ void FurnaceGUI::doAction(int what) { DivSample* sample=e->song.sample[curSample]; sample->prepareUndo(true); int pos=(sampleSelStart==-1 || sampleSelStart==sampleSelEnd)?sample->samples:sampleSelStart; + if (pos>=(int)sample->samples) pos=sample->samples-1; + if (pos<0) pos=0; + logV("paste position: %d",pos); e->lockEngine([this,sample,pos]() { if (!sample->insert(pos,sampleClipboardLen)) { @@ -739,6 +743,8 @@ void FurnaceGUI::doAction(int what) { DivSample* sample=e->song.sample[curSample]; sample->prepareUndo(true); int pos=(sampleSelStart==-1 || sampleSelStart==sampleSelEnd)?0:sampleSelStart; + if (pos>=(int)sample->samples) pos=sample->samples-1; + if (pos<0) pos=0; e->lockEngine([this,sample,pos]() { if (sample->depth==8) { @@ -767,6 +773,8 @@ void FurnaceGUI::doAction(int what) { DivSample* sample=e->song.sample[curSample]; sample->prepareUndo(true); int pos=(sampleSelStart==-1 || sampleSelStart==sampleSelEnd)?0:sampleSelStart; + if (pos>=(int)sample->samples) pos=sample->samples-1; + if (pos<0) pos=0; e->lockEngine([this,sample,pos]() { if (sample->depth==8) {