我有一个使用 XCode 开发的 iOS 项目,它使用 libpd 加载纯数据补丁。我的项目将 [osc~] 和 [phasor~] 与调制参数(音高、音量等)混合使用。我的应用程序现在需要 64 位。我正在使用最新版本的 Pure Data 和 libpd。
它在一个地方崩溃。我有一个 [osc~],它的音高由包络调制。当我更改设备上包络长度的值(= 调制率)时,它会在测试期间随机崩溃,但总是在同一行 libpd 代码上。我认为这与参数更改的速度有关,但不,当参数缓慢更改时也会发生这种情况。
下面是出现问题的(减少的)补丁。我最近赶上了纯数据。欢迎任何建议或更正。
这是 XCode 中崩溃的屏幕截图,其中包含代码序列和崩溃的 clock_unset 行。
(来源: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
有人经历过类似的事情吗?
谢谢。