Обсуждение: Failure to exit critical section on error case
Hi all A user pointed out that after line 130 in pgxalib.c: 122 HDBC XAConnection::ActivateConnection(void) 123 { 124 RETCODE ret; 125 126 MLOCK_ACQUIRE; 127 if (!init_crit.env) 128 { 129 ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &init_crit.env); 130 if (!SQL_SUCCEEDED(ret)) 131 return NULL; 132 } 133 MLOCK_RELEASE; we fail to MLOCK_RELEASE . It seems like a trivial fix to just if (!SQL_SUCCEEDED(ret)) { MLOCK_RELEASE; return NULL; } -- Craig Ringer http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
On 06/15/2015 11:14 AM, Craig Ringer wrote: > Hi all > > A user pointed out that after line 130 in pgxalib.c: > > 122 HDBC XAConnection::ActivateConnection(void) > 123 { > 124 RETCODE ret; > 125 > 126 MLOCK_ACQUIRE; > 127 if (!init_crit.env) > 128 { > 129 ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, > &init_crit.env); > 130 if (!SQL_SUCCEEDED(ret)) > 131 return NULL; > 132 } > 133 MLOCK_RELEASE; > > we fail to MLOCK_RELEASE . > > It seems like a trivial fix to just > > if (!SQL_SUCCEEDED(ret)) > { > MLOCK_RELEASE; > return NULL; > } > Fixed, thanks. - Heikki