首先这个错误在tpreturn()的时候才发生;
*
* If the service routine has not given us the
* same pointer back which we passed to it,
* then we actually have two buffers to free:
* The original buffer, and the buffer passed
* to tpreturn.
*/
if((TUX->_TUX__tmsysmsg != (TMMSG *) NULL) &&
(msgbuf != TUX->_TUX__tmsysmsg)) {
/* User did not give us same buffer back */
(void) _gp_bsizeof((char *) TUX->_TUX__tmsysmsg, &syssize);
TUX->_TUX__tm_swindex = (short) TUX->_TUX__tmsysmsg->ltype_idx;
if(_tmuninitbuf(getudata(TUX->_TUX__tmsysmsg),
syssize - MHLEN(TUX->_TUX__tmsysmsg)) == -1) {
(void) userlog(_MHS_(LIBTUX_CAT,1532,MHS_USERLOG,
"ERROR: Type switch buffer uninitialization routine failure"));
}
MKRQTYPE(TUX->_TUX__tmsysmsg);
}