Subject: Don't panic if Tcl_ConvertToType is called for a type that doesn't have a setFromAnyProc, create a proper error message.

From: "jan.nijtmans" <[email-masked]>
Date: Tue, 26 Feb 2013 10:15:44 +0000

---
 ChangeLog        | 5 +++++
 generic/tclObj.c | 7 ++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index c1b3640..270adaa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-02-26  Jan Nijtmans  <[email-masked]>
+
+	* generic/tclObj.c: Don't panic if Tcl_ConvertToType is called for a
+	type that doesn't have a setFromAnyProc, create a proper error message.
+
 2013-02-25  Don Porter  <[email-masked]>
 
 	* tests/assocd.test:	[Bugs 3605719,3605720] Test independence.
diff --git a/generic/tclObj.c b/generic/tclObj.c
index e14c740..24b818b 100644
--- a/generic/tclObj.c
+++ b/generic/tclObj.c
@@ -993,7 +993,12 @@ Tcl_ConvertToType(
      */
 
     if (typePtr->setFromAnyProc == NULL) {
-	Tcl_Panic("may not convert object to type %s", typePtr->name);
+	if (interp) {
+	    Tcl_SetObjResult(interp, Tcl_ObjPrintf(
+		    "can't convert value to type %s", typePtr->name));
+	    Tcl_SetErrorCode(interp, "TCL", "API_ABUSE", NULL);
+	}
+	return TCL_ERROR;
     }
 
     return typePtr->setFromAnyProc(interp, objPtr);
-- 
cgit v0.12