aboutsummaryrefslogtreecommitdiff
path: root/Lib/tcl/tclwstrings.swg
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/tcl/tclwstrings.swg')
-rw-r--r--Lib/tcl/tclwstrings.swg15
1 files changed, 8 insertions, 7 deletions
diff --git a/Lib/tcl/tclwstrings.swg b/Lib/tcl/tclwstrings.swg
index b3b682e30..76da2ab08 100644
--- a/Lib/tcl/tclwstrings.swg
+++ b/Lib/tcl/tclwstrings.swg
@@ -12,14 +12,14 @@
SWIGINTERN int
SWIG_AsWCharPtrAndSize(Tcl_Obj *obj, wchar_t** cptr, size_t* psize, int *alloc)
{
- int len = 0;
+ Tcl_Size len = 0;
Tcl_UniChar *ustr = Tcl_GetUnicodeFromObj(obj, &len);
if (ustr) {
if (cptr) {
Tcl_Encoding encoding = NULL;
char *src = (char *) ustr;
- int srcLen = (len)*sizeof(Tcl_UniChar);
- int dstLen = sizeof(wchar_t)*(len + 1);
+ Tcl_Size srcLen = (len)*sizeof(Tcl_UniChar);
+ Tcl_Size dstLen = sizeof(wchar_t)*(len + 1);
char *dst = %new_array(dstLen, char);
int flags = 0;
Tcl_EncodingState *statePtr = 0;
@@ -29,6 +29,7 @@ SWIG_AsWCharPtrAndSize(Tcl_Obj *obj, wchar_t** cptr, size_t* psize, int *alloc)
Tcl_UtfToExternal(0, encoding, src, srcLen, flags, statePtr, dst,
dstLen, &srcRead, &dstWrote, &dstChars);
+ *cptr = (wchar_t*)dst;
if (alloc) *alloc = SWIG_NEWOBJ;
}
if (psize) *psize = len + 1;
@@ -43,11 +44,11 @@ SWIGINTERNINLINE Tcl_Obj *
SWIG_FromWCharPtrAndSize(const wchar_t* carray, size_t size)
{
Tcl_Obj *res = NULL;
- if (size < INT_MAX) {
+ if (size < TCL_SIZE_MAX) {
Tcl_Encoding encoding = NULL;
char *src = (char *) carray;
- int srcLen = (int)(size*sizeof(wchar_t));
- int dstLen = (int)(size*sizeof(Tcl_UniChar));
+ Tcl_Size srcLen = (Tcl_Size)(size*sizeof(wchar_t));
+ Tcl_Size dstLen = (Tcl_Size)(size*sizeof(Tcl_UniChar));
char *dst = %new_array(dstLen, char);
int flags = 0;
Tcl_EncodingState *statePtr = 0;
@@ -58,7 +59,7 @@ SWIG_FromWCharPtrAndSize(const wchar_t* carray, size_t size)
Tcl_ExternalToUtf(0, encoding, src, srcLen, flags, statePtr, dst,
dstLen, &srcRead, &dstWrote, &dstChars);
- res = Tcl_NewUnicodeObj((Tcl_UniChar*)dst, (int)size);
+ res = Tcl_NewUnicodeObj((Tcl_UniChar*)dst, (Tcl_Size)size);
%delete_array(dst);
}
return res;