merge (with conflict fixes) with master (even against rgareus' recommendation)
[ardour.git] / libs / ardour / vst_plugin.cc
index f74f5b0a5f03ffd03f8e0ff2ae968b05826848bd..168bd0506ec25c83e0dc13e970eeb654eef6ac17 100644 (file)
@@ -298,7 +298,7 @@ VSTPlugin::get_parameter_descriptor (uint32_t which, ParameterDescriptor& desc)
 
                char label[64];
                /* some VST plugins expect this buffer to be zero-filled */
-               memset (label, sizeof (label), 0);
+               memset (label, 0, sizeof (label));
 
                _plugin->dispatcher (_plugin, effGetParamName, which, 0, label, 0);
                
@@ -528,8 +528,9 @@ VSTPlugin::connect_and_run (BufferSet& bufs,
 {
        Plugin::connect_and_run (bufs, in_map, out_map, nframes, offset);
 
-       float *ins[_plugin->numInputs];
-       float *outs[_plugin->numOutputs];
+       // VC++ doesn't support this C99 extension. Use alloca instead of dynamic array (rather than std::vector which allocs on the heap)
+       float** ins = (float**)alloca(_plugin->numInputs*sizeof(float*));
+       float** outs = (float**)alloca(_plugin->numInputs*sizeof(float*));
        int32_t i;
 
        const uint32_t nbufs = bufs.count().n_audio();
@@ -552,7 +553,7 @@ VSTPlugin::connect_and_run (BufferSet& bufs,
        }
 
        /* we already know it can support processReplacing */
-       _plugin->processReplacing (_plugin, ins, outs, nframes);
+       _plugin->processReplacing (_plugin, &ins[0], &outs[0], nframes);
 
        return 0;
 }