Skip to content

Commit 0030b3e

Browse files
committed
Squashed 'libjamesdsp/subtree/' changes from 4f4d8cf..d888a6c
d888a6c Update crossfeed.c 1e111a3 fix: fixed crash in libjamesdsp d69003d Update liveprogWrapper.c git-subtree-dir: libjamesdsp/subtree git-subtree-split: d888a6c56bf9a15ccb462d1b7dc0f3e046f4fdab
1 parent 89fe27c commit 0030b3e

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

Main/libjamesdsp/jni/jamesdsp/jdsp/Effects/crossfeed.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,13 @@ void CrossfeedEnable(JamesDSPLib *jdsp, char enable)
5858
{
5959
TwoStageFFTConvolver2x4x2Free(jdsp->advXF.convLong_T_S);
6060
free(jdsp->advXF.convLong_T_S);
61+
jdsp->advXF.convLong_T_S = NULL;
6162
}
6263
if (jdsp->advXF.convLong_S_S)
6364
{
6465
FFTConvolver2x4x2Free(jdsp->advXF.convLong_S_S);
6566
free(jdsp->advXF.convLong_S_S);
67+
jdsp->advXF.convLong_S_S = NULL;
6668
}
6769
jdsp->advXF.conv[0] = (FFTConvolver2x4x2 *)malloc(sizeof(FFTConvolver2x4x2));
6870
FFTConvolver2x4x2Init(jdsp->advXF.conv[0]);
@@ -139,4 +141,4 @@ void CrossfeedProcess(JamesDSPLib *jdsp, size_t n)
139141
FFTConvolver2x4x2Process(jdsp->advXF.conv[jdsp->advXF.mode - 2], jdsp->tmpBuffer[0], jdsp->tmpBuffer[1], jdsp->tmpBuffer[0], jdsp->tmpBuffer[1], (unsigned int)n);
140142
else
141143
jdsp->advXF.process(jdsp, (unsigned int)n);
142-
}
144+
}

Main/libjamesdsp/jni/jamesdsp/jdsp/Effects/liveprogWrapper.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,17 @@ void LiveProgProcess(JamesDSPLib *jdsp, size_t n)
154154
{
155155
*eel->input1 = jdsp->tmpBuffer[0][i];
156156
*eel->input2 = jdsp->tmpBuffer[1][i];
157-
NSEEL_code_execute(eel->codehandleProcess);
158-
jdsp->tmpBuffer[0][i] = (float)*eel->input1;
159-
jdsp->tmpBuffer[1][i] = (float)*eel->input2;
157+
NSEEL_code_execute(eel->codehandleProcess);
158+
// Prevent broken scripts (returning NaN or inf) causing permanent audio loss
159+
if(isinf((float)*eel->input1) || isnan((float)*eel->input1))
160+
jdsp->tmpBuffer[0][i] = 0;
161+
else
162+
jdsp->tmpBuffer[0][i] = (float)*eel->input1;
163+
164+
if(isinf((float)*eel->input2) || isnan((float)*eel->input2))
165+
jdsp->tmpBuffer[1][i] = 0;
166+
else
167+
jdsp->tmpBuffer[1][i] = (float)*eel->input2;
160168
}
161169
}
162170
}

0 commit comments

Comments
 (0)