Ticket UUID: | 3202905 | |||
Title: | Incorrect Tcl Interpreter Obj Result | |||
Type: | Bug | Version: | obsolete: 8.5.9 | |
Submitter: | cjmcdonald | Created on: | 2011-03-08 11:43:46 | |
Subsystem: | 45. Parsing and Eval | Assigned To: | dgp | |
Priority: | 5 Medium | Severity: | ||
Status: | Closed | Last Modified: | 2011-03-08 22:25:53 | |
Resolution: | Fixed | Closed By: | dgp | |
Closed on: | 2011-03-08 15:25:53 | |||
Description: |
There is a problem with obj results returned from an interpreter. When the obj result is reset, a tclStringType internal rep can be left for an empty string. This then gives inconsistent results for a new obj result. The attached example program objresult_example.c demonstrates the issue. The problem is in ResetObjResult in tclResult.c, where it is assumed that the obj result only needs to be reset if it is not an empty string. Changing this so that is always clears any internal rep fixes the problem. This patch is against the 8.5.9 release: *** tclResult.c.859 Wed Mar 24 15:31:48 2010 --- tclResult.c Tue Mar 8 11:21:20 2011 *************** *** 961,972 **** TclNewObj(objResultPtr); Tcl_IncrRefCount(objResultPtr); iPtr->objResultPtr = objResultPtr; ! } else if (objResultPtr->bytes != tclEmptyStringRep) { ! if (objResultPtr->bytes != NULL) { ! ckfree((char *) objResultPtr->bytes); } - objResultPtr->bytes = tclEmptyStringRep; - objResultPtr->length = 0; TclFreeIntRep(objResultPtr); objResultPtr->typePtr = NULL; } --- 961,974 ---- TclNewObj(objResultPtr); Tcl_IncrRefCount(objResultPtr); iPtr->objResultPtr = objResultPtr; ! } else { ! if (objResultPtr->bytes != tclEmptyStringRep) { ! if (objResultPtr->bytes != NULL) { ! ckfree((char *) objResultPtr->bytes); ! } ! objResultPtr->bytes = tclEmptyStringRep; ! objResultPtr->length = 0; } TclFreeIntRep(objResultPtr); objResultPtr->typePtr = NULL; } | |||
User Comments: |
dgp added on 2011-03-08 22:25:53:
allow_comments - 1 fixed in all open branches. dgp added on 2011-03-08 21:54:01: Bug introduced in checkin a9ae49ef27 2007-11-10 Bad miguel! cjmcdonald added on 2011-03-08 18:43:46: File Added - 403697: objresult_example.c |
Attachments:
- objresult_example.c [download] added by cjmcdonald on 2011-03-08 18:43:46. [details]