summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-03-24 11:34:39 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-03-24 11:34:39 (GMT)
commit0febd13af2d2275d3b63ef191462fc4fea18db99 (patch)
treedb1da87029a89f8a61530c0e4f48e2f605420f83 /generic
parent4e3426067cddf752f0c15e8a2ce29f5f9052341f (diff)
downloadtcl-0febd13af2d2275d3b63ef191462fc4fea18db99.zip
tcl-0febd13af2d2275d3b63ef191462fc4fea18db99.tar.gz
tcl-0febd13af2d2275d3b63ef191462fc4fea18db99.tar.bz2
Implement PANIC when the UTF16 compatibility layer is used in combination with -DTCL_NO_DEPRECATED
Diffstat (limited to 'generic')
-rw-r--r--generic/tclStubInit.c28
-rw-r--r--generic/tclUtf.c6
2 files changed, 21 insertions, 13 deletions
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index 7c8c219..131053a 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -83,19 +83,27 @@
#define TclWinConvertError (void (*)(DWORD))(void *)Tcl_WinConvertError
#endif
-#define TclUtfCharComplete UtfCharComplete
-#define TclUtfNext UtfNext
-#define TclUtfPrev UtfPrev
#if TCL_UTF_MAX > 3 && defined(TCL_NO_DEPRECATED)
-#define Tcl_GetUnicodeFromObj 0
-#define Tcl_AppendUnicodeToObj 0
-#define Tcl_NewUnicodeObj 0
-#define Tcl_SetUnicodeObj 0
-#define Tcl_UtfAtIndex 0
-#define Tcl_GetCharLength 0
+static void uniCodePanic(void) {
+ Tcl_Panic("Tcl is compiled without the the UTF16 compatibility layer (-DTCL_NO_DEPRECATED)");
+}
+# define Tcl_GetUnicode (unsigned short *(*)(Tcl_Obj *))(void *)uniCodePanic
+# define Tcl_GetUnicodeFromObj (unsigned short *(*)(Tcl_Obj *, int *))(void *)uniCodePanic
+# define Tcl_NewUnicodeObj (Tcl_Obj *(*)(const unsigned short *, int))(void *)uniCodePanic
+# define Tcl_SetUnicodeObj (void(*)(Tcl_Obj *, const unsigned short *, int))(void *)uniCodePanic
+# define Tcl_AppendUnicodeToObj (void(*)(Tcl_Obj *, const unsigned short *, int))(void *)uniCodePanic
+# define Tcl_UtfAtIndex (const char *(*)(const char *, int))(void *)uniCodePanic
+# define Tcl_GetCharLength (int(*)(Tcl_Obj *))(void *)uniCodePanic
+# define Tcl_UniCharNcmp (int(*)(const unsigned short *, const unsigned short *, unsigned long))(void *)uniCodePanic
+# define Tcl_UniCharNcasecmp (int(*)(const unsigned short *, const unsigned short *, unsigned long))(void *)uniCodePanic
+# define Tcl_UniCharCaseMatch (int(*)(const unsigned short *, const unsigned short *, int))(void *)uniCodePanic
#endif
+#define TclUtfCharComplete UtfCharComplete
+#define TclUtfNext UtfNext
+#define TclUtfPrev UtfPrev
+
static int TclUtfCharComplete(const char *src, int length) {
if ((unsigned)((unsigned char)*(src) - 0xF0) < 5) {
return length < 3;
@@ -679,8 +687,8 @@ static int utfNcasecmp(const char *s1, const char *s2, unsigned int n){
# define Tcl_SetExitProc 0
# define Tcl_SetPanicProc 0
# define Tcl_FindExecutable 0
-# define Tcl_GetUnicode 0
#if TCL_UTF_MAX < 4
+# define Tcl_GetUnicode 0
# define Tcl_AppendUnicodeToObj 0
# define Tcl_UniCharCaseMatch 0
# define Tcl_UniCharNcasecmp 0
diff --git a/generic/tclUtf.c b/generic/tclUtf.c
index 2a335d7..82adf65 100644
--- a/generic/tclUtf.c
+++ b/generic/tclUtf.c
@@ -1957,7 +1957,7 @@ TclUniCharNcmp(
#endif /* WORDS_BIGENDIAN */
}
-#if TCL_UTF_MAX > 3
+#if (TCL_UTF_MAX > 3) && !defined(TCL_NO_DEPRECATED)
int
Tcl_UniCharNcmp(
const unsigned short *ucs, /* Unicode string to compare to uct. */
@@ -2028,7 +2028,7 @@ TclUniCharNcasecmp(
return 0;
}
-#if TCL_UTF_MAX > 3
+#if (TCL_UTF_MAX > 3) && !defined(TCL_NO_DEPRECATED)
int
Tcl_UniCharNcasecmp(
const unsigned short *ucs, /* Unicode string to compare to uct. */
@@ -2584,7 +2584,7 @@ TclUniCharCaseMatch(
}
}
-#if TCL_UTF_MAX > 3
+#if (TCL_UTF_MAX > 3) && !defined(TCL_NO_DEPRECATED)
int
Tcl_UniCharCaseMatch(
const unsigned short *uniStr, /* Unicode String. */