Seems to be working, nice! I still want to take a stab at making a vanilla patch for partitioned convolution. That way you can have really low latency I/O even if your impulse response is several seconds long. Not a problem to do in C as an external, and seeing your zero padding mask in the overlap 2 sub-patch makes me want to try it out.
PS: since the impulse response isn't changing, you could do the transform on it once ahead of time, store the results in tables, then tabreceive them for the convolution multiply. Save an FFT!