On the contrary I welcome OpenMAMA forks If you want to fork and maintain all fixes etc from the upstream that's entirely your decision and part of the beauty of Open Source software. More power to you.
I simply don't agree that always leaking is the right solution when it's avoidable. It's as simple as that.
After another look I think the solution should live in the C++ destructor method where it can:
1. Cache the payload type in the C++ layer as soon as it is known.
2. On destructor, find out if the bridge referred to in #1 is still active using mamaInternal_findPayload
from mamaMsg_destroy. Therefore the destroy calls can intercept bridge specific calls before they are made which would otherwise cause a crash.
The mama internal lock may also need to be opened up to avoid race conditions.
You can do something similar in Java finalizer methods via a JNI method.
Alternatively you could have a mama property which will simply prevent the payload bridges from being deallocated and will instead only destroy the middleware bridges. This way it will do what you want (i.e. always leak memory), but not be turned on for everyone unless they want it.