Fossil SCM
Don't set USE_TCL_EVALOBJV=1 for Tcl 8.6b3 and higher by default.
Commit
8c8c6bce2187307c2535042a8ffa6781227afab1
Parent
d7f83e7462c75e0…
1 file changed
+7
-10
+7
-10
| --- src/th_tcl.c | ||
| +++ src/th_tcl.c | ||
| @@ -29,27 +29,24 @@ | ||
| 29 | 29 | ** Has the decision about whether or not to use Tcl_EvalObjv already been made |
| 30 | 30 | ** via the Makefile? |
| 31 | 31 | */ |
| 32 | 32 | #if !defined(USE_TCL_EVALOBJV) |
| 33 | 33 | /* |
| 34 | -** Are we being compiled against Tcl 8.6 or higher? This check is [mostly] | |
| 35 | -** wrong for at least the following two reasons: | |
| 34 | +** Are we being compiled against Tcl 8.6b1 or b2? This check is [mostly] | |
| 35 | +** wrong for at the following reason: | |
| 36 | 36 | ** |
| 37 | -** 1. This check assumes that all versions of Tcl 8.6 and higher suffer from | |
| 38 | -** the issue described in SF bug #3399564, which is incorrect. | |
| 39 | -** | |
| 40 | -** 2. Technically, this check is completely useless when the stubs mechanism | |
| 37 | +** 1. Technically, this check is completely useless when the stubs mechanism | |
| 41 | 38 | ** is in use. In that case, a runtime version check would be required and |
| 42 | 39 | ** that has not been implemented. |
| 43 | 40 | ** |
| 44 | -** However, if a particular user compiles and runs against Tcl 8.6 (or later), | |
| 41 | +** However, if a particular user compiles and runs against Tcl 8.6b1 or b2, | |
| 45 | 42 | ** this will cause a fallback to using the "conservative" method of directly |
| 46 | 43 | ** invoking a Tcl command. In that case, potential crashes will be avoided if |
| 47 | -** the user just so happened to compile or run against a late beta of Tcl 8.6. | |
| 44 | +** the user just so happened to compile or run against Tcl 8.6b1 or b2. | |
| 48 | 45 | */ |
| 49 | -#if (TCL_MAJOR_VERSION > 8) || \ | |
| 50 | - ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 6)) | |
| 46 | +#if (TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION == 6) && \ | |
| 47 | + (TCL_RELEASE_LEVEL == TCL_BETA_RELEASE) && (TCL_RELEASE_SERIAL < 3) | |
| 51 | 48 | /* |
| 52 | 49 | ** Workaround NRE-specific issue in Tcl_EvalObjCmd (SF bug #3399564) by using |
| 53 | 50 | ** Tcl_EvalObjv instead of invoking the objProc directly. |
| 54 | 51 | */ |
| 55 | 52 | # define USE_TCL_EVALOBJV (1) |
| 56 | 53 |
| --- src/th_tcl.c | |
| +++ src/th_tcl.c | |
| @@ -29,27 +29,24 @@ | |
| 29 | ** Has the decision about whether or not to use Tcl_EvalObjv already been made |
| 30 | ** via the Makefile? |
| 31 | */ |
| 32 | #if !defined(USE_TCL_EVALOBJV) |
| 33 | /* |
| 34 | ** Are we being compiled against Tcl 8.6 or higher? This check is [mostly] |
| 35 | ** wrong for at least the following two reasons: |
| 36 | ** |
| 37 | ** 1. This check assumes that all versions of Tcl 8.6 and higher suffer from |
| 38 | ** the issue described in SF bug #3399564, which is incorrect. |
| 39 | ** |
| 40 | ** 2. Technically, this check is completely useless when the stubs mechanism |
| 41 | ** is in use. In that case, a runtime version check would be required and |
| 42 | ** that has not been implemented. |
| 43 | ** |
| 44 | ** However, if a particular user compiles and runs against Tcl 8.6 (or later), |
| 45 | ** this will cause a fallback to using the "conservative" method of directly |
| 46 | ** invoking a Tcl command. In that case, potential crashes will be avoided if |
| 47 | ** the user just so happened to compile or run against a late beta of Tcl 8.6. |
| 48 | */ |
| 49 | #if (TCL_MAJOR_VERSION > 8) || \ |
| 50 | ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 6)) |
| 51 | /* |
| 52 | ** Workaround NRE-specific issue in Tcl_EvalObjCmd (SF bug #3399564) by using |
| 53 | ** Tcl_EvalObjv instead of invoking the objProc directly. |
| 54 | */ |
| 55 | # define USE_TCL_EVALOBJV (1) |
| 56 |
| --- src/th_tcl.c | |
| +++ src/th_tcl.c | |
| @@ -29,27 +29,24 @@ | |
| 29 | ** Has the decision about whether or not to use Tcl_EvalObjv already been made |
| 30 | ** via the Makefile? |
| 31 | */ |
| 32 | #if !defined(USE_TCL_EVALOBJV) |
| 33 | /* |
| 34 | ** Are we being compiled against Tcl 8.6b1 or b2? This check is [mostly] |
| 35 | ** wrong for at the following reason: |
| 36 | ** |
| 37 | ** 1. Technically, this check is completely useless when the stubs mechanism |
| 38 | ** is in use. In that case, a runtime version check would be required and |
| 39 | ** that has not been implemented. |
| 40 | ** |
| 41 | ** However, if a particular user compiles and runs against Tcl 8.6b1 or b2, |
| 42 | ** this will cause a fallback to using the "conservative" method of directly |
| 43 | ** invoking a Tcl command. In that case, potential crashes will be avoided if |
| 44 | ** the user just so happened to compile or run against Tcl 8.6b1 or b2. |
| 45 | */ |
| 46 | #if (TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION == 6) && \ |
| 47 | (TCL_RELEASE_LEVEL == TCL_BETA_RELEASE) && (TCL_RELEASE_SERIAL < 3) |
| 48 | /* |
| 49 | ** Workaround NRE-specific issue in Tcl_EvalObjCmd (SF bug #3399564) by using |
| 50 | ** Tcl_EvalObjv instead of invoking the objProc directly. |
| 51 | */ |
| 52 | # define USE_TCL_EVALOBJV (1) |
| 53 |