summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--generic/tclCompile.c7
-rw-r--r--generic/tclIndexObj.c2
-rw-r--r--generic/tclNamesp.c4
-rw-r--r--generic/tclObj.c4
5 files changed, 22 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 4572003..c88efd1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2011-04-21 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tclCompile.c: Make sure SetFooFromAny routines react
+ * generic/tclIndexObj.c: reasonably when passed a NULL interp.
+ * generic/tclNamesp.c:
+ * generic/tclObj.c:
+
2011-04-21 Jan Nijtmans <nijtmans@users.sf.net>
* generic/tcl.h: fix for [Bug 3288345]: Wrong Tcl_StatBuf
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.
*/