diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-08-31 23:58:22 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-08-31 23:58:22 (GMT) |
commit | 13d9114a51d1c63fb18d21d2abe4cade17b13612 (patch) | |
tree | 645ecbf6c3c6c2c5d5adaf1d248c9db0d49c68ee /generic | |
parent | 0775a7cd8965b3f9d982a26302965a1e7f6f7750 (diff) | |
download | tk-13d9114a51d1c63fb18d21d2abe4cade17b13612.zip tk-13d9114a51d1c63fb18d21d2abe4cade17b13612.tar.gz tk-13d9114a51d1c63fb18d21d2abe4cade17b13612.tar.bz2 |
Experiment: Break Tk_GetColor/Tk_Get3DBorder's Tk_Uid contract in the worst possible way: Allocate a new object before every call, and dispose it immediately afterwards. This shows that the Tk_Uid argument doesn't really need to be a Tk_Uid
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tk3d.c | 21 | ||||
-rw-r--r-- | generic/tkColor.c | 19 |
2 files changed, 36 insertions, 4 deletions
diff --git a/generic/tk3d.c b/generic/tk3d.c index 8082f0c..32717fb 100644 --- a/generic/tk3d.c +++ b/generic/tk3d.c @@ -179,8 +179,8 @@ Tk_Alloc3DBorderFromObj( *-------------------------------------------------------------- */ -Tk_3DBorder -Tk_Get3DBorder( +static Tk_3DBorder +Tk_Get3DBorder_( Tcl_Interp *interp, /* Place to store an error message. */ Tk_Window tkwin, /* Token for window in which border will be * drawn. */ @@ -254,6 +254,23 @@ Tk_Get3DBorder( borderPtr->bgGC = Tk_GetGC(tkwin, GCForeground, &gcValues); return (Tk_3DBorder) borderPtr; } + +Tk_3DBorder +Tk_Get3DBorder( + Tcl_Interp *interp, /* Place to store an error message. */ + Tk_Window tkwin, /* Token for window in which border will be + * drawn. */ + Tk_Uid colorName) /* String giving name of color for window + * background. */ +{ + Tk_3DBorder x; + Tcl_Obj *obj = Tcl_NewStringObj(colorName, -1); + + x = Tk_Get3DBorder_(interp, tkwin, Tcl_GetString(obj)); + Tcl_DecrRefCount(obj); + return x; + +} /* *-------------------------------------------------------------- diff --git a/generic/tkColor.c b/generic/tkColor.c index baff5e7..1793b85 100644 --- a/generic/tkColor.c +++ b/generic/tkColor.c @@ -185,8 +185,8 @@ Tk_AllocColorFromObj( *---------------------------------------------------------------------- */ -XColor * -Tk_GetColor( +static XColor * +Tk_GetColor_( Tcl_Interp *interp, /* Place to leave error message if color can't * be found. */ Tk_Window tkwin, /* Window in which color will be used. */ @@ -265,6 +265,21 @@ Tk_GetColor( return &tkColPtr->color; } +XColor * +Tk_GetColor( + Tcl_Interp *interp, /* Place to leave error message if color can't + * be found. */ + Tk_Window tkwin, /* Window in which color will be used. */ + Tk_Uid name) /* Name of color to be allocated (in form + * suitable for passing to XParseColor). */ +{ + XColor *x; + Tcl_Obj *obj = Tcl_NewStringObj(name, -1); + + x = Tk_GetColor_(interp, tkwin, Tcl_GetString(obj)); + Tcl_DecrRefCount(obj); + return x; +} /* *---------------------------------------------------------------------- * |