| @@ -667,7 +667,7 @@ public: | |||||
| #ifdef BUILD_BRIDGE | #ifdef BUILD_BRIDGE | ||||
| pData->options.processMode = ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS; | pData->options.processMode = ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS; | ||||
| #else | #else | ||||
| carla_fill<jack_port_t*>(fRackPorts, nullptr, kRackPortCount); | |||||
| carla_zeroPointers(fRackPorts, kRackPortCount); | |||||
| #endif | #endif | ||||
| // FIXME: Always enable JACK transport for now | // FIXME: Always enable JACK transport for now | ||||
| @@ -877,7 +877,7 @@ public: | |||||
| jackbridge_port_unregister(fClient, fRackPorts[kRackPortEventIn]); | jackbridge_port_unregister(fClient, fRackPorts[kRackPortEventIn]); | ||||
| jackbridge_port_unregister(fClient, fRackPorts[kRackPortEventOut]); | jackbridge_port_unregister(fClient, fRackPorts[kRackPortEventOut]); | ||||
| } | } | ||||
| carla_fill<jack_port_t*>(fRackPorts, nullptr, kRackPortCount); | |||||
| carla_zeroPointers(fRackPorts, kRackPortCount); | |||||
| pData->graph.destroy(); | pData->graph.destroy(); | ||||
| } | } | ||||
| @@ -1711,7 +1711,7 @@ protected: | |||||
| fClient = nullptr; | fClient = nullptr; | ||||
| #ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
| carla_fill<jack_port_t*>(fRackPorts, nullptr, kRackPortCount); | |||||
| carla_zeroPointers(fRackPorts, kRackPortCount); | |||||
| #endif | #endif | ||||
| runPendingRtEvents(); | runPendingRtEvents(); | ||||
| @@ -517,7 +517,7 @@ public: | |||||
| { | { | ||||
| carla_debug("CarlaPluginLV2::CarlaPluginLV2(%p, %i)", engine, id); | carla_debug("CarlaPluginLV2::CarlaPluginLV2(%p, %i)", engine, id); | ||||
| carla_fill<LV2_Feature*>(fFeatures, nullptr, kFeatureCountAll+1); | |||||
| carla_zeroPointers(fFeatures, kFeatureCountAll+1); | |||||
| for (uint32_t i=0; i < CARLA_URI_MAP_ID_COUNT; ++i) | for (uint32_t i=0; i < CARLA_URI_MAP_ID_COUNT; ++i) | ||||
| fCustomURIDs.append(nullptr); | fCustomURIDs.append(nullptr); | ||||
| @@ -2234,7 +2234,7 @@ private: | |||||
| : numEvents(0), | : numEvents(0), | ||||
| reserved(0) | reserved(0) | ||||
| { | { | ||||
| carla_fill<VstEvent*>(data, nullptr, kPluginMaxMidiEvents*2); | |||||
| carla_zeroPointers(data, kPluginMaxMidiEvents*2); | |||||
| } | } | ||||
| CARLA_DECLARE_NON_COPY_STRUCT(FixedVstEvents); | CARLA_DECLARE_NON_COPY_STRUCT(FixedVstEvents); | ||||
| @@ -215,7 +215,7 @@ public: | |||||
| fExt(), | fExt(), | ||||
| leakDetector_CarlaLv2Client() | leakDetector_CarlaLv2Client() | ||||
| { | { | ||||
| carla_fill<LV2_Feature*>(fFeatures, nullptr, kFeatureCount+1); | |||||
| carla_zeroPointers(fFeatures, kFeatureCount+1); | |||||
| for (uint32_t i=0; i < CARLA_URI_MAP_ID_COUNT; ++i) | for (uint32_t i=0; i < CARLA_URI_MAP_ID_COUNT; ++i) | ||||
| fCustomURIDs.append(nullptr); | fCustomURIDs.append(nullptr); | ||||
| @@ -397,6 +397,19 @@ void carla_zeroChar(char* const data, const std::size_t numChars) noexcept | |||||
| std::memset(data, 0, numChars*sizeof(char)); | std::memset(data, 0, numChars*sizeof(char)); | ||||
| } | } | ||||
| /* | |||||
| * Clear a pointer array. | |||||
| */ | |||||
| template<typename T> | |||||
| static inline | |||||
| void carla_zeroPointers(T* pointers[], const std::size_t numPointers) noexcept | |||||
| { | |||||
| CARLA_SAFE_ASSERT_RETURN(pointers != nullptr,); | |||||
| CARLA_SAFE_ASSERT_RETURN(numPointers > 0,); | |||||
| std::memset(pointers, 0, numPointers*sizeof(T*)); | |||||
| } | |||||
| /* | /* | ||||
| * Clear a single struct/class. | * Clear a single struct/class. | ||||
| */ | */ | ||||