summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generic/tclOOMethod.c1
-rw-r--r--tests/oo.test11
2 files changed, 12 insertions, 0 deletions
diff --git a/generic/tclOOMethod.c b/generic/tclOOMethod.c
index 99a8bfc..8da0fb3 100644
--- a/generic/tclOOMethod.c
+++ b/generic/tclOOMethod.c
@@ -1314,6 +1314,7 @@ CloneProcedureMethod(
*/
bodyObj = Tcl_DuplicateObj(pmPtr->procPtr->bodyPtr);
+ Tcl_GetString(bodyObj);
TclFreeIntRep(bodyObj);
/*
diff --git a/tests/oo.test b/tests/oo.test
index 1ac6f37..61a5e01 100644
--- a/tests/oo.test
+++ b/tests/oo.test
@@ -2048,6 +2048,17 @@ test oo-15.14 {OO: object cloning with target NS} -setup {
} -cleanup {
Cls destroy
} -result {{} ::dupens::test-15.14}
+test oo-15.15 {method cloning must ensure that there is a string representation of bodies} -setup {
+ oo::class create cls
+} -body {
+ cls create foo
+ oo::objdefine foo {
+ method m1 {} [string map {a b} {return hello}]
+ }
+ [oo::copy foo] m1
+} -cleanup {
+ cls destroy
+} -result hello
test oo-16.1 {OO: object introspection} -body {
info object