diff options
| author | dkf <donal.k.fellows@manchester.ac.uk> | 2011-09-16 13:13:11 (GMT) | 
|---|---|---|
| committer | dkf <donal.k.fellows@manchester.ac.uk> | 2011-09-16 13:13:11 (GMT) | 
| commit | d1afedc4afdead04b87a35755efd2f2116766a38 (patch) | |
| tree | fa60ba1a0c33fd214cda7a1313d82633c445d112 | |
| parent | 24f95384925c3ebda269b153465d19c01703cd0a (diff) | |
| download | tcl-d1afedc4afdead04b87a35755efd2f2116766a38.zip tcl-d1afedc4afdead04b87a35755efd2f2116766a38.tar.gz tcl-d1afedc4afdead04b87a35755efd2f2116766a38.tar.bz2 | |
[Bug 3408830]: Use the _right_ fix for [Bug 3400658]!
| -rw-r--r-- | ChangeLog | 10 | ||||
| -rw-r--r-- | generic/tclOOMethod.c | 2 | ||||
| -rw-r--r-- | generic/tclProc.c | 2 | ||||
| -rw-r--r-- | tests/oo.test | 10 | 
4 files changed, 17 insertions, 7 deletions
| @@ -1,5 +1,9 @@  2011-09-16  Donal K. Fellows  <dkf@users.sf.net> +	* generic/tclProc.c (ProcWrongNumArgs): [Bugs 3400658,3408830]: +	Ensemble-like rewriting of error messages is complex, and TclOO (in +	combination with iTcl) hits the most tricky cases. +  	* library/http/http.tcl (http::geturl): [Bug 3391977]: Ensure that the  	-headers option overrides the -type option (important because -type  	has a default that is not always appropriate, and the header must not @@ -33,12 +37,6 @@  	Thread package use in socket_*-13.1.  Eliminates a memory leak in  	`make valgrind`. -2011-09-10  Donal K. Fellows  <dkf@users.sf.net> - -	* generic/tclOOMethod.c (InitEnsembleRewrite): [Bug 3400658]: Set the -	ensemble-like rewriting up correctly for forwarded methods so that -	computed error messages are correct. -  2011-09-09  Don Porter  <dgp@users.sourceforge.net>  	* tests/chanio.test:	[Bug 3389733]: Convert [testthread] use to diff --git a/generic/tclOOMethod.c b/generic/tclOOMethod.c index 708295a..4e7edb8 100644 --- a/generic/tclOOMethod.c +++ b/generic/tclOOMethod.c @@ -1595,7 +1595,7 @@ InitEnsembleRewrite(      if (isRootEnsemble) {  	iPtr->ensembleRewrite.sourceObjs = objv;  	iPtr->ensembleRewrite.numRemovedObjs = toRewrite; -	iPtr->ensembleRewrite.numInsertedObjs = rewriteLength - 1; +	iPtr->ensembleRewrite.numInsertedObjs = rewriteLength;      } else {  	int numIns = iPtr->ensembleRewrite.numInsertedObjs; diff --git a/generic/tclProc.c b/generic/tclProc.c index 50cf0f7..d008217 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -1120,6 +1120,8 @@ ProcWrongNumArgs(      if (framePtr->isProcCallFrame & FRAME_IS_LAMBDA) {  	desiredObjs[0] = Tcl_NewStringObj("lambdaExpr", -1);      } else { +	((Interp *) interp)->ensembleRewrite.numInsertedObjs -= skip - 1; +  #ifdef AVOID_HACKS_FOR_ITCL  	desiredObjs[0] = framePtr->objv[skip-1];  #else diff --git a/tests/oo.test b/tests/oo.test index 5ec5d2f..171ccc7 100644 --- a/tests/oo.test +++ b/tests/oo.test @@ -880,6 +880,16 @@ test oo-6.17 {Bug 3400658: forwarding and wrongargs rewriting - via ensemble} -s  } -returnCodes error -cleanup {      fooClass destroy  } -result {wrong # args: should be "foo test c d"} +test oo-6.18 {Bug 3408830: more forwarding cases} -setup { +    oo::class create fooClass +} -body { +    oo::define fooClass { +	forward len  string length +    } +    [fooClass create foo] len a b +} -returnCodes error -cleanup { +    fooClass destroy +} -result {wrong # args: should be "::foo len string"}  test oo-7.1 {OO: inheritance 101} -setup {      oo::class create superClass | 
