[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