1

我有一个使用 XCode 开发的 iOS 项目,它使用 libpd 加载纯数据补丁。我的项目将 [osc~] 和 [phasor~] 与调制参数(音高、音量等)混合使用。我的应用程序现在需要 64 位。我正在使用最新版本的 Pure Data 和 libpd。

它在一个地方崩溃。我有一个 [osc~],它的音高由包络调制。当我更改设备上包络长度的值(= 调制率)时,它会在测试期间随机崩溃,但总是在同一行 libpd 代码上。我认为这与参数更改的速度有关,但不,当参数缓慢更改时也会发生这种情况。

下面是出现问题的(减少的)补丁。我最近赶上了纯数据。欢迎任何建议或更正。

调制振荡器.pd

这是 XCode 中崩溃的屏幕截图,其中包含代码序列和崩溃的 clock_unset 行。

crash_m_sched.png
(来源:pdpatchrepo.info

完整的图片在这里

我做了一些打印,它在这个函数中崩溃了:

void clock_unset(t_clock *x){
    if (x->c_settime >= 0){
        if (x == clock_setlist) clock_setlist = x->c_next;
        else{
            t_clock *x2 = clock_setlist;
            while (x2->c_next != x) x2 = x2->c_next;
            x2->c_next = x->c_next;
        }
        x->c_settime = -1;
    }
}

在这条线上:

while (x2->c_next != x) x2 = x2->c_next;

打印值为:x2->c_next==NULL

有人经历过类似的事情吗?

谢谢。

4

0 回答 0