summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2024-08-31 23:58:22 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2024-08-31 23:58:22 (GMT)
commit13d9114a51d1c63fb18d21d2abe4cade17b13612 (patch)
tree645ecbf6c3c6c2c5d5adaf1d248c9db0d49c68ee /generic
parent0775a7cd8965b3f9d982a26302965a1e7f6f7750 (diff)
downloadtk-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.c21
-rw-r--r--generic/tkColor.c19
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;
+}
/*
*----------------------------------------------------------------------
*