{"push_id":556443799,"size":1,"distinct_size":1,"ref":"refs/heads/REL9_3_STABLE","head":"22967ed5b457e9a8646c5960856fca79b7d1de36","before":"6ae1513a797208340c1137654c24a38dc90b05a0","commits":[{"sha":"22967ed5b457e9a8646c5960856fca79b7d1de36","author":{"email":"ffeaa947aef224da9ba99b6a18bdd74288df0e3e@sss.pgh.pa.us","name":"Tom Lane"},"message":"Fix volatile-safety issue in pltcl_SPI_execute_plan().\n\nThe \"callargs\" variable is modified within PG_TRY and then referenced\nwithin PG_CATCH, which is exactly the coding pattern we've now found\nto be unsafe.  Marking \"callargs\" volatile would be problematic because\nit is passed by reference to some Tcl functions, so fix the problem\nby not modifying it within PG_TRY.  We can just postpone the free()\ntill we exit the PG_TRY construct, as is already done elsewhere in this\nsame file.\n\nAlso, fix failure to free(callargs) when exiting on too-many-arguments\nerror.  This is only a minor memory leak, but a leak nonetheless.\n\nIn passing, remove some unnecessary \"volatile\" markings in the same\nfunction.  Those doubtless are there because gcc 2.95.3 whinged about\nthem, but we now know that its algorithm for complaining is many bricks\nshy of a load.\n\nThis is certainly a live bug with compilers that optimize similarly\nto current gcc, so back-patch to all active branches.","distinct":true,"url":"https://api.github.com/repos/postgres/postgres/commits/22967ed5b457e9a8646c5960856fca79b7d1de36"}]}