[PD-dev] Object crashes when trying to write to its outlet
Alexandros Drymonitis
adrcki at gmail.com
Fri Sep 22 12:32:38 CEST 2023
I'm trying to code an object with a variable number of inlets and
outlets, that's more complex than the one I posted a few days ago.
Writing to its input works fine, but when I try to write to its output,
Pd crashes. The culprit is when I try to access each individual output.
In the new routine, I allocate memory likes this:
```
x->x_in = (t_sample **)getbytes(ninlets * sizeof(t_sample *));
x->x_out = (t_sample **)getbytes(noutlets * sizeof(t_sample *));
for (i = 0; i < ninlets; i++)
x->x_in[i] = (t_sample *)getbytes(x->x_blksize * sizeof(t_sample));
for (i = 0; i < noutlets; i++)
x->x_out[i] = (t_sample *)getbytes(x->x_blksize * sizeof(t_sample));
```
But Pd crashes when I try to access any output other that
x->x_out[0][0]. In a function that is called by the perform routine, I
do the following:
```
for (i = 0; i < x->x_noutlets; i++) {
x->x_out[i][x->x_sample_index] = (t_sample)x->x_outvec[i];
}
```
and Pd crashes. Debugging with gdb pointed to this line. Changing the
code to x->x_out[0][0] does not crash Pd. I have also confirmed that
x->x_outvec[i] is not crashing Pd.
Since memory for x->x_out has been allocated, and since I'm not trying
to access an element beyond this allocated memory (which is also
confirmed), why does Pd crash? Or am I doing something wrong in the
memory allocation part?
More information about the Pd-dev
mailing list