summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2011-04-21 12:58:31 (GMT)
committerdgp <dgp@users.sourceforge.net>2011-04-21 12:58:31 (GMT)
commit3dee0582a464245f4ebfb6cc887e198566d3f035 (patch)
treeb8ecdf481ef7cee8415ecfaad655ad6d985cbbf0 /generic
parent445fd51fa9afc1afece5244fbaa88454f3d310c5 (diff)
downloadtcl-3dee0582a464245f4ebfb6cc887e198566d3f035.zip
tcl-3dee0582a464245f4ebfb6cc887e198566d3f035.tar.gz
tcl-3dee0582a464245f4ebfb6cc887e198566d3f035.tar.bz2
Make sure SetFooFromAny routines react reasonably when passed a NULL interp.
Diffstat (limited to 'generic')
-rw-r--r--generic/tclCompile.c7
-rw-r--r--generic/tclIndexObj.c2
-rw-r--r--generic/tclNamesp.c4
-rw-r--r--generic/tclObj.c4
4 files changed, 15 insertions, 2 deletions
diff --git a/generic/tclCompile.c b/generic/tclCompile.c
index 660a1f2..0b1a3ff 100644
--- a/generic/tclCompile.c
+++ b/generic/tclCompile.c
@@ -333,12 +333,12 @@ Tcl_ObjType tclByteCodeType = {
* compiling its string representation. This function also takes
* a hook procedure that will be invoked to perform any needed post
* processing on the compilation results before generating byte
- * codes.
+ * codes. interp is compilation context and may not be NULL.
*
* Results:
* The return value is a standard Tcl object result. If an error occurs
* during compilation, an error message is left in the interpreter's
- * result unless "interp" is NULL.
+ * result.
*
* Side effects:
* Frees the old internal representation. If no error occurs, then the
@@ -515,6 +515,9 @@ SetByteCodeFromAny(interp, objPtr)
* being compiled. Must not be NULL. */
Tcl_Obj *objPtr; /* The object to make a ByteCode object. */
{
+ if (interp == NULL) {
+ return TCL_ERROR;
+ }
return TclSetByteCodeFromAny(interp, objPtr,
(CompileHookProc *) NULL, (ClientData) NULL);
}
diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c
index 9d8679c..79fc262 100644
--- a/generic/tclIndexObj.c
+++ b/generic/tclIndexObj.c
@@ -308,9 +308,11 @@ SetIndexFromAny(interp, objPtr)
Tcl_Interp *interp; /* Used for error reporting if not NULL. */
register Tcl_Obj *objPtr; /* The object to convert. */
{
+ if (interp) {
Tcl_AppendToObj(Tcl_GetObjResult(interp),
"can't convert value to index except via Tcl_GetIndexFromObj API",
-1);
+ }
return TCL_ERROR;
}
diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c
index 4130c66..77352a1 100644
--- a/generic/tclNamesp.c
+++ b/generic/tclNamesp.c
@@ -3913,6 +3913,10 @@ SetNsNameFromAny(interp, objPtr)
Namespace *nsPtr, *dummy1Ptr, *dummy2Ptr;
register ResolvedNsName *resNamePtr;
+ if (interp == NULL) {
+ return TCL_ERROR;
+ }
+
/*
* Get the string representation. Make it up-to-date if necessary.
*/
diff --git a/generic/tclObj.c b/generic/tclObj.c
index 43f0d2e..7b9bb61 100644
--- a/generic/tclObj.c
+++ b/generic/tclObj.c
@@ -3597,6 +3597,10 @@ SetCmdNameFromAny(interp, objPtr)
Namespace *currNsPtr;
register ResolvedCmdName *resPtr;
+ if (interp == NULL) {
+ return TCL_ERROR;
+ }
+
/*
* Get "objPtr"s string representation. Make it up-to-date if necessary.
*/