summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2006-02-27 11:36:02 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2006-02-27 11:36:02 (GMT)
commit476a3e28876df91e6dd4b39375fd00f9ee7a5922 (patch)
tree19981e8e952d86d063104857c4f4fc757ce3fecd
parent6ea528c7ad651fef535c7d18a8e19500750763a0 (diff)
downloadtk-476a3e28876df91e6dd4b39375fd00f9ee7a5922.zip
tk-476a3e28876df91e6dd4b39375fd00f9ee7a5922.tar.gz
tk-476a3e28876df91e6dd4b39375fd00f9ee7a5922.tar.bz2
Fix old thread-safety issue. [Bug 470322]
-rw-r--r--ChangeLog3
-rw-r--r--generic/tkBitmap.c8
2 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index ff04b84..eb6ebbc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2006-02-27 Donal K. Fellows <donal.k.fellows@manchester.ac.uk>
+ * generic/tkBitmap.c (Tk_GetBitmapFromData): Improve thread-safety.
+ [Bug 470322]
+
* generic/tkImgBmap.c (ImgBmapConfigureInstance): Force creation of
new Pixmaps before deletion of old ones to prevent stupid caching
problems. [Bug 480862]
diff --git a/generic/tkBitmap.c b/generic/tkBitmap.c
index 3f9e2e6..c97d5c2 100644
--- a/generic/tkBitmap.c
+++ b/generic/tkBitmap.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkBitmap.c,v 1.10 2002/08/05 04:30:38 dgp Exp $
+ * RCS: @(#) $Id: tkBitmap.c,v 1.10.2.1 2006/02/27 11:36:02 dkf Exp $
*/
#include "tkPort.h"
@@ -818,8 +818,12 @@ Tk_GetBitmapFromData(interp, tkwin, source, width, height)
char string[16 + TCL_INTEGER_SPACE];
char *name;
TkDisplay *dispPtr = ((TkWindow *) tkwin)->dispPtr;
+ ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
+ Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
- BitmapInit(dispPtr);
+ if (!tsdPtr->initialized) {
+ BitmapInit(dispPtr);
+ }
nameKey.source = source;
nameKey.width = width;