Avoid leaks with GetPrimitiveArrayCritical.

It is possible that one of the two calls to GetPrimitiveArrayCritical
succeeded, in which case an exception would be thrown and the memory
would not be released. Ensure that every successful call to
GetPrimitiveArrayCritical is followed by a call to
ReleasePrimitiveArrayCritical.