Tcl Source Code

View Ticket
Login
Ticket UUID: 500930
Title: Tcl_GetString* doc inconsistency
Type: Bug Version: obsolete: 8.4a4
Submitter: dgp Created on: 2002-01-08 17:51:08
Subsystem: 10. Objects Assigned To: msofer
Priority: 5 Medium Severity:
Status: Closed Last Modified: 2002-06-26 18:51:07
Resolution: Accepted Closed By: msofer
    Closed on: 2002-06-26 11:51:07
Description:
In doc/StringObj.3, the docs for Tcl_GetString
and Tcl_GetStringFromObj say:

 Tcl_GetStringFromObj and Tcl_GetString return an
 object's string representation. ... The storage
 referenced by the returned  byte pointer is owned
 by the object manager and should not be modified
 by the caller.  ...

If it is true that the caller should not modify the
storage referenced by the returned pointer, then
these routines should return a (CONST char *) so
that the return type enforces the documented
requirement.

However, there are many places within Tcl and
popular extensions such as Tk where the returned
value is stored in a (char *) variable, and some
places where the referenced storage is modified
directly, when it is known that it is safe to do
so within the rules of Tcl's copy-on-write rules
for Tcl_Obj's.

One choice or the other should be made.  It seems
likely that the documentation should be changed to
note the conditions where it is safe for the caller
to modify the internal storage of a Tcl_Obj referenced
by the returned pointer.
User Comments: dgp added on 2002-06-26 07:11:26:

File Added - 25828: 500930.patch

Logged In: YES 
user_id=80530

here's a patch.  please consider it for 8.4b.

Attachments: