summaryrefslogtreecommitdiffstats
path: root/generic/tkStubLib.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2007-09-17 14:58:03 (GMT)
committerdgp <dgp@users.sourceforge.net>2007-09-17 14:58:03 (GMT)
commitd98de46cbf3d68ad1e6176baa680db013ca5a890 (patch)
tree92740e87730997e6b8a2ab7f1db5d6bb6b55a361 /generic/tkStubLib.c
parent9779d2ce0b98c4742ff649b1e6bc5c5037f52870 (diff)
downloadtk-d98de46cbf3d68ad1e6176baa680db013ca5a890.zip
tk-d98de46cbf3d68ad1e6176baa680db013ca5a890.tar.gz
tk-d98de46cbf3d68ad1e6176baa680db013ca5a890.tar.bz2
* generic/tkConsole.c: Revised callers of Tcl_InitStubs() to account
* generic/tkMain.c: for restored compatible support for the call * generic/tkWindow.c: Tcl_InitStubs(interp, TCL_VERSION, 1). Also revised Tcl_PkgRequire() call for Tcl so that, for example, a Tk library built against Tcl 8.5.1 headers will not refuse to [load] into a Tcl 8.5.0 interpreter. [Tcl Bug 1578344]. * generic/tk.h: Revised Tk_InitStubs() to restore Tk 8.4 * generic/tkStubLib.c: source compatibility with callers of * generic/tkWindow.c: Tk_InitStubs(interp, TK_VERSION, 1).
Diffstat (limited to 'generic/tkStubLib.c')
-rw-r--r--generic/tkStubLib.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/generic/tkStubLib.c b/generic/tkStubLib.c
index 93033ae..6c884c5 100644
--- a/generic/tkStubLib.c
+++ b/generic/tkStubLib.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkStubLib.c,v 1.15 2007/09/07 00:34:53 dgp Exp $
+ * RCS: @(#) $Id: tkStubLib.c,v 1.16 2007/09/17 14:58:04 dgp Exp $
*/
/*
@@ -85,11 +85,29 @@ Tk_InitStubs(
CONST char *actualVersion;
TkStubs **stubsPtrPtr = &tkStubsPtr; /* squelch warning */
- actualVersion = Tcl_PkgRequireEx(interp, "Tk", version, exact,
+ actualVersion = Tcl_PkgRequireEx(interp, "Tk", version, 0,
(ClientData *) stubsPtrPtr);
if (!actualVersion) {
return NULL;
}
+ if (exact) {
+ CONST char *p = version;
+ int count = 0;
+
+ while (*p) {
+ count += !isdigit(*p++);
+ }
+ if (count == 1) {
+ if (0 != strncmp(version, actualVersion, strlen(version))) {
+ return NULL;
+ }
+ } else {
+ actualVersion = Tcl_PkgRequireEx(interp, "Tk", version, 1, NULL);
+ if (actualVersion == NULL) {
+ return NULL;
+ }
+ }
+ }
if (!tkStubsPtr) {
Tcl_SetResult(interp,