forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit19a6bac
committed
Clean up a number of bogosities around pltcl's handling of the Tcl "result":
1. Directly reading interp->result is deprecated in Tcl 8.0 and later;you're supposed to use Tcl_GetStringResult. This code finally broke withTcl 8.5, because Tcl_GetVar can now have side-effects on interp->result eventhough it preserves the logical state of the result. (There's arguably aTcl issue here, because Tcl_GetVar could invalidate the pointer result of ajust-preceding Tcl_GetStringResult, but I doubt the Tcl guys will see it asa bug.)2. We were being sloppy about the encoding of the result: some places wouldpush database-encoding data into the Tcl result, which should not happen,and we were assuming that any error result coming back from Tcl was in thedatabase encoding, which is not a good assumption.3. There were a lot of calls of Tcl_SetResult that uselessly specifiedTCL_VOLATILE for constant strings. This is only a minor performance issue,but I fixed it in passing since I had to look at all the calls anyway.#2 is a live bug regardless of which Tcl version you are interested in,so back-patch even to branches that are unlikely to be used with Tcl 8.5.I went back as far as 8.0, which is as far as the patch applied easily;7.4 was using a different error processing scheme that has got its ownproblems :-(1 parent9dac1b4 commit19a6bac
1 file changed
+110
-61
lines changed0 commit comments
Comments
(0)