tcl-8.4.19-win32castingfailure-1rsk.diff at [5421b32beb]

File tcl/patches/8.4.19/tcl-8.4.19-win32castingfailure-1rsk.diff artifact 6395811591 part of check-in 5421b32beb


diff -uNr tcl8.4.19.orig/win/tclWinDde.c tcl8.4.19-1rsk/win/tclWinDde.c
--- tcl8.4.19.orig/win/tclWinDde.c	2006-04-05 15:50:46.000000000 -0500
+++ tcl8.4.19-1rsk/win/tclWinDde.c	2010-10-12 10:40:23.000000000 -0500
@@ -1308,7 +1308,7 @@
 	    }
 
 	    objc -= (async + 3);
-	    ((Tcl_Obj **) objv) += (async + 3);
+	    objv += (async + 3);
 
             /*
 	     * See if the target interpreter is local.  If so, execute
diff -uNr tcl8.4.19.orig/win/tclWinReg.c tcl8.4.19-1rsk/win/tclWinReg.c
--- tcl8.4.19.orig/win/tclWinReg.c	2007-05-15 11:08:22.000000000 -0500
+++ tcl8.4.19-1rsk/win/tclWinReg.c	2010-10-13 02:03:11.000000000 -0500
@@ -776,6 +776,7 @@
     } else if (type == REG_MULTI_SZ) {
 	char *p = Tcl_DStringValue(&data);
 	char *end = Tcl_DStringValue(&data) + length;
+        Tcl_UniChar *p_uc;
 
 	/*
 	 * Multistrings are stored as an array of null-terminated strings,
@@ -790,7 +791,9 @@
 		    Tcl_NewStringObj(Tcl_DStringValue(&buf),
 			    Tcl_DStringLength(&buf)));
 	    if (regWinProcs->useWide) {
-		while (*((Tcl_UniChar *)p)++ != 0) {}
+                p_uc = (Tcl_UniChar *) p;
+		while (*p_uc++ != '\0') {}
+                p = (char *) p_uc;
 	    } else {
 		while (*p++ != '\0') {}
 	    }