Matrix Modulator voice nullptr crash
- 
@Christoph-Hart For some reasons re-open my project results in an instant crash as soon as I added a Matrix Mod to an Extra slot.
AI said to add a voice
nullptrcheck in therenderfunction (Modulators.cppline 1199)
But it also says there might a voice management problem if we get there with a dereference…So I did this and it works just fine:
void EnvelopeModulator::render(int voiceIndex, float* voiceBuffer, float* scratchBuffer, int startSample, int numSamples) { bool saveFirst = false; if(isMonophonic) { auto ownerSynth = static_cast<ModulatorSynth*>(getParentProcessor(true)); auto voice = static_cast<ModulatorSynthVoice*>(ownerSynth->getVoice(voiceIndex)); // CHECK ADDED HERE if((voice != nullptr && voice->isFirstRenderedVoice()) || getVoiceAmount() == 1) { saveFirst = true; } else { setScratchBuffer(scratchBuffer, startSample + numSamples); FloatVectorOperations::copy(internalBuffer.getWritePointer(0, startSample), firstVoiceBuffer.getReadPointer(0, startSample), numSamples); applyTimeModulation(voiceBuffer, startSample, numSamples); return; } }Does it make sense to you?
Should I make a PR?Can send the crash log and AI reasoning if you're interested in...
 - 
@ustk a minimal snippet that causes the crash would be most useful.
 - 
@Christoph-Hart yup!
HiseSnippet 1777.3oc2Xs0aaaCElJNL2ZGVKZ2dX.CvOlt0EXEq3Di8PShSbqwhSLhcyJ1dHiVh1VHRjZRzI1aXuu25eo8SX+RF1+fsCEk0EGmDWu1TiYCXXxygje7bgmKM74lzf.tORasVC8nHsGhaNjI5UoGwlgpc.R6o35Dgu8f5bqWQ7sp3SB5g1enGIHfZgzzx8RImZqtHJ7ye+h8INDlIMYJD5LtsI8HaWaQxrM186rcbpRrnsrcSwswt0L4rJbGde.U4vEPdDyKHcoGSjrs.F8JIBz9JbASiNaUxvvnX6sH6nu4NkKRH55zRELHsMJtyVk2prkQQcj1RGZYK39MEDAM.os39bqgM6wuhoNfyrCra6PkCzQMgSVMcUtik7JJmEUomsiUiQhq.DRC2HQ3kSI7.Ykskc77IBwGERHexJRK.0VHK7xkAd5ogWgTvaBPRKEjVTAoGiaZ5a6IRnHwyCv0XBpeGBnmRCEEuHs+.WgCLvDa3RtfV0GFDuf0KUnvyyC+7rusSelovlyxyYGyEzSXq+r0900Vcseas7iSpSmIRSdL9bGGp+DIKMM7usEtNquaap+yyeIwoOMlQ35mUlhuYYZZUto5VmhQNqFyVbhGkcSFBnHQE7uWW6.hfHUDQyA74Q8E1RHnc.8RvMPoVVEe.M3BA2CbDtlNCrV3V8cHhrlPRGsHBfLHidSpbXA1hgocDeuYWMsP7w3F1BydSFiKLALBRpODXLxa7SvG1oC0Tj.vEwUey8mq2ZQtdvYJO7GFMLe02nOQmteGmXf64S8H9zV7FNjgqGPb8bnmBX744a6vMuno8uPutWgmBB6K4XcydDFi5DLKNOKM0RE8aWprxTZ4rB9vABeh98nQcFM1ZidrLNVmBggf6IQylOd5L3bg5bF2qGmYalFnmRg0zsK0O8jItFv+fCDqImehWzJ8CDb2ZVgg7NSpfR62zzkyE8rYcyF7r1tZ4dOo6Tm4oDVWpzMsFyquPMRC6lNhOB4RFjF40XWBu4ozgABpmzXMM6snCDfEXHSfz4ywGy8cIN.WVMn9lvylD4YdRew6si70ATH.bCNHjAY+dA+.0mK4E8tYet4c8f1GgGcifVw4WnYL+BsslegVo4Wns87Kz149DZmx6KfmfUQGf2nNtuaSnpESZknXuxG3WPlgnZbgQO32jxrBG7OvmHh5xwZQD0GQLUxkGSEWw8uHLzUz+gqsJyhfvTHNuy..9T+.YpWZKiKrA7EsmiC+pJbWO6njxf28BmqA2Y3n3VZ4TbLB564x6CmZD9SBas+nrOFcUfhwZQrcjR6l8CfzjsNg0D1mvJ.gDrzNNLP2xUIlfLeXChnmLNqLQaP0Q82vLVEl4ZjnFkBeUseYXPpwZP7ABPTj.kpSdVipbTAO3V4JEexfnZ4jzkxuETfZIUd0W4S7nRimyc4fjOCR+rTH0EJgSg1IAtqsOSKXzRAlGfi2fr33Q.N7oajPcRPH8puiSewDUZKheWpHHppEF0TYjDJijoerDtq7NGKqUyEV0OJkB.VQ7H3HqayhRZAKsCQ0IChFuDVuDLQy3vzXrNLVd8WFJK0hN.kYknoaaU6xj10OcTk5Ms6xHNis6R6dG5fQEtcfcfGjx898gRGToIlYFXrBhPsDeid3qSiJvKqzHCkvbMkiFJyjJzTuVvYRplI3A7zRYIDI0yXD7.kQP2axDLZM2gpegLJsbojtKkHcWAtcEFW.WHi.9ovXfmvO5FkKnqWB7JufdkByx7l2ZCiM2bysKr81F6XnWrPYj5pEZ7rWeH+VhHtCKSFHiqlWAKOy2MfHYnXA8BEAFJWdGixaWPOpMHw4QihsN2bbit6IwxCwmRCnB01NlGvMYkAFVI3b4TB2O7PFB2R8A2oTU6CU7BVZsgGKsBSxuEO7.SkqursGl1soNYdrYVcW9u1tkUTD+B7Kc3siuIPVEidxOTu7kQjSJ+KeLC52RmP+yosSndScmPGuqVKNcE2cGMxbw4tFYNsI88jqoZB9X0AgGqfIFeT0ShjTv+tgVFLYfsusG2gHCwjqpO8m6C4PMh9O815+0KjVH0RLv18s698jKocfhmiLxi2oincgyL8Lsntd7lCYlSQSDd5tGw4dGxHfTvJ8lznGIP1IW3UpLaCrss30IPg29Uj4GllXstLHlkp6vomW0diQWfvHSxGjBcn09QbIiMfOc9Z4ukq.+T7j2OieW533czbqElZqTokPrJWZSLG17VEJiM7lSQ4s1h4b+utEy2Kkap1bUX06kCzkX5yO2T0P5vVFGNCHDXg4ztJttbbdczki2CTY8XmaZlcqt1B2bVWXwYcgFy5B2ZVWXoYcgaOqKbm6dgxDEhxwW5mhP0abn54cs3XKZ4P+KLSJLoBHere it will open because I forced the MatrixMod module to be bypassed in the XML to be able to export a snippet
But as soon as you unbypass it, baboom kaboom! - 
I can understand the rationale behind bypassing the modulator when no connection is present (cpu saving?), but isn't there another way not to render it when there's no modulation rather than a hard bypass?
 - 
@ustk no it must be bypassed for performance reasons - there might be hundreds of possible modulation slots so if it would render them all just because there are empty matrixes in it it would
be pretty bad.Why is that a problem?
 - 
@Christoph-Hart Yeah I understand the performance thing
It's not a problem at all for me if it stays bypassed, the problem is that it crashes when unbypassed
Of course, I can just hate myself clicking on it while there is no modulator present. But the fact is that it's saved unbypassed with the project when you first create it (or set/unset a few thingies), and boom, crash at next opening - 
@Christoph-Hart In fact, I even get a hard crash when dragging a modulator to a slider.
Am I even doing it right?HiseSnippet 2116.3oc2Y0raibbDtGQ0Zk3pDuarBPPPB.gNImrVfC+mNGVJQItKgWJQHRuds8A4lyzjrgFN83YFthLF9RNka9rukWibSOB4QHOAA9MHo5tmgyLTTRbI1UVHT.Br++q9ppqp5hsc4FTOOtKRKc2oNTj113NSs8GVeHgYiZdDRaGbKhuKaRKt4KItl0cIdCQGN0g34QMQZZodgXlZasNR94me9gDKhsAMpKD50blA8UrQL+ndaW6yYVVMHlztrQwlcgZMM3104V7w.pRgyhbHFWPFPOgHl1ZXzKEHP6OgyZTnewREJTHeuhjJ54pTMOgnqSKks.oWg7UJVsXUyB40QZabrIym61wm3S8PZqeH2bZmg7KsUGvqYdrdVTQCcTG3jUc2faYJDQQun5CYVlsCoKODRC2Nh7RoHOfqXlrY8GQhOQNPlnUDm.0VKI7Rk.d5wgW1XvaAPRKFjVWAomh6X3xb7iFQfmGiaZ6Sc6S.8TbnnlKR6JbcNLAa+8GQtf1vEZLaA6UJa1mkA92m7W5O11vmwsyvsOg6SO0duOI82mdqz+P5LyOT+9KbLww3xsrntKbXgog6ssv8rGOpG08YYdKwZLc1DAwOImhuYNMtJ2PI0wlH2toMy+TGp8MYHfBnJA+GfJXp9R1+WGv9crXlTWDCH4Gg+badOcjDvwujf9hlGQ7IgaCrivo3Pc8YBAP6H5agKQJk5V3indW3ycfCpNejC2Vb9ZaemG5jnCbZsoyZTiVyIThZBS+iCtymAtzO1h.7nNbKzEt.B1.Mk62qkveD2L.NFrdTKzn3tB9pqFQlDWB87oNcX+0Po9e7S+z+74di62mAyBiyXdHrdSSKZatGSnliVatqPWWN2IPNaXwI9L6AcYfBUHseDNdWIjZPtiZ3W6Rlo+vYcb0eq1PJavvHuT+amZA5BEw+avALBfNEEg5MHtuJlOczhamS0gOche7IHU4ZSvee5LY1scjRX2OKytuvh2iXEoDxHvB3Rg5pu6yDyuosIcBLyOUW1DbXYwu7K4tW3A9Lov.8IVdT4XJigN9SsD8uqvbX2z+.Z0o0b2DsVyYNZ04ZzJ5jjz5e3ZzZjegXD713bkymOe1BEKVXUY5y+PxzBB85tfeBd19FOhfHtYjXmvMrvWqMbGXZ73pu2BSrrP7o31LeigKFiqs.LBtt9Pfwffq+J7w86SM7i.353Fu49KRZ5v6EuQd3aGzLSi2nuvXn+cbT7JGWJ3+j1k21hLcOOxHGK5Y.FeVldVbiKDNEudPt.WxGJlwdFCI11TKuUIV3FKMqne6rxlKokyl3im36RzuGMpSnwRGl6yrTWUHTBtEEbKtgcKtM2YH2lYDGnmQg0LX.3OJVmw7ZICDh0D8uPAs9XOe9HQryMwu3flmjAjs4y.nyHN2enz+Z7LhaVSK06IMn5LOiXOfJtr1z1Yrupk1F2dr6l1uEREQoImKNt7SWo2V0jbSlRvhCo+6tBc5X+nyGm37QnDm+O+7657+BOJjhc3wbf2WSc4h4hd2LYycW939EvOb.zx+vEZEd3BshObgVoGtPq7CWnU49DZmwGKx2MHUeM7IiG0ARnzfVOHbrvm+Zh2.pZmMLFPGpsorw+E9DLntnsVvf5gCF87QzIT+KEoTJhlE7cPrUIa3Iyp379S.3Sc8jtReDN69venCDIiJRjmEjmF32S1Wat0zvPYpWJBItGflCFwGKx5Wg+nHYGFlPRnn7RhWWByRv1cF6AOD17T6Nv9HqwCjyk1IxXeOpAw.37osIhT+eJ1HLC58MloBSHFQpQA4qptShIHzXsCe0omR0INqvj5UvCjpQxmurFFlhXbA+slBTanR09RWhCUX7bN7fUcTBj9aigTHVESg1EAtqsOKKXzhAlGimsAIwwS.b3R2OZzEAg3q9NN80iTocItCn9dAUVvlZnLRjbjHijMvCDxb63uveC46SPnXJ.XEyZAGYKlcPFLXgcHpEYRP6Mv5kfN5LKLMFqCsEh+ivxWRgRrRzxsspcYQ65GEVKtNrA1Dq41cgcuEcRXwUNh44.Yge3X30DpLGSzCzVAQ34Eeptz6TXQXRxFIFQl9on0TQZURS8lduVLpQDdfaZwrDBX8DFAOVYDL3lLACVycn5WKgRKUL1ciH1cSP5xNOAmMAAuCzFli7idgpY00KA2JufdoByhToKtegb4xUNa4xEpTPOe1pHknIMdNXLjxKweVMTWLPlWMuIVblua.QLg7Y0ylGlP0pUJTsbV8fBcNKoZzLqybyazcOQKaiOi5Q8Ua6b2.tIqLvvJBmaEib+vCYHbK0EtNEq..vifAKsdfyRSYF+c4xCbgI9eDsOYrUfzJrKC91N.bKuetpvmJkKA+kuZkDdlV06VqR8Sim7wlpA+8XU0fhRAIL9fTI9Gw2RwhtkeXj+0x9Ci3rz+vHyWj60WtmEdG+tFq+f620XYyP7iulpw6WpJP7TELw3W03z.lB91MTxgECrCYNbKhHdTpFtzuaLjvU33e6O15+7bgERyHCrZ+Xsuj7VZet6n.i7Y6zqnCfyLdOcoib3clZarDkeXmZuhycN1l.rfY7Mo8Phm3G1AbokXafssKuEAdktacQxjIJiv.aH.m5GKJd+pxiDJ.R2EBuWpZ19M3RE1G9z+OK9e05v+xe56m1uKUr7NJN1ZKsUpvRXlJWXS7.r3uJTNyv6AJJu0RTm5+qKQ88xaSUatJr58xANhX3xO2PUPaYImk8.jfsLA3svsDsyrfe+Twi2N2vH4VcsElaUWX9UcgEV0EVbUWXoUcgkW0EV4tWnHQgfGDHtmhPsZerx8t1rXKZoP+OFKWPAA

 - 
@Christoph-Hart Bump bump

I’m stuck in current project development
 - 
@Christoph-Hart So if I do the exact same thing inside a synthesiser it works, but crashes as soon as it is a master FX