From: SourceForge.net <no...@so...> - 2007-03-21 21:11:00
|
Feature Requests item #1685436, was opened at 2007-03-21 11:22 Message generated for change (Comment added) made by andreas_kupries You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=360894&aid=1685436&group_id=10894 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Don Porter (dgp) Assigned to: Nobody/Anonymous (nobody) Summary: document Tcl_Preserve-ability Initial Comment: Some public Tcl routines return pointers that can be Tcl_Preserve()d; for example, Tcl_CreateInterp(). Other public Tcl routines return pointers that cannot be Tcl_Preserve()d; for example, Tcl_CreateNamespace(). The pointers returned by such routines really can't be reliably kept long-term. Perhaps that's a bug, and more return-able pointers need to support Tcl_Preserve-ability. If not, the documentation should at least make this distinction clear. ---------------------------------------------------------------------- >Comment By: Andreas Kupries (andreas_kupries) Date: 2007-03-21 14:10 Message: Logged In: YES user_id=75003 Originator: NO I wonder if we can snarf ideas from the linux kernel for that. IIRC they are using special macros and type magic, likely gcc specific, to give pointers additional attributes which the compiler can check. For us basically a preserve-ability tag which goes with the pointer and is checker at compile time when Tcl_Preserve is used. I should note that I have no actual idea how their stuff works in detail. Regarding it being gcc specific, it should be easy to disable that for other compilers through redefinition of whatever macros are used to implement this. Even if we are unable or unwilling to reproduce the thing we can still use macros like #define PRESERVABLE(x) x to at least add appropriate tags in the sources. No compiler checks, but at least semi-documentation in the code. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=360894&aid=1685436&group_id=10894 |