# HG changeset patch # User J. Ali Harlow # Date 1265676129 0 # Node ID 3073875f1b54a5c5f656872de3e3128c27cd0eb6 # Parent 76758820d807432644cfc4935da5c29468f7da26 Always terminate unicode strings diff -r 76758820d807 -r 3073875f1b54 whelk/unicode.c --- a/whelk/unicode.c Mon Feb 08 22:16:57 2010 +0000 +++ b/whelk/unicode.c Tue Feb 09 00:42:09 2010 +0000 @@ -8,11 +8,15 @@ int n; char *utf8; n=WideCharToMultiByte(CP_UTF8,0,utf16,len,NULL,0,NULL,NULL); - if (n) + if (n || !len) { - utf8=malloc(n); + utf8=malloc(len<0?n:n+1); if (utf8) + { WideCharToMultiByte(CP_UTF8,0,utf16,len,utf8,n,NULL,NULL); + if (len>=0) + utf8[n]=0; + } } else utf8=NULL; @@ -24,11 +28,15 @@ int n; WCHAR *utf16; n=MultiByteToWideChar(CP_UTF8,0,utf8,len,NULL,0); - if (n) + if (n || !len) { - utf16=malloc(n*sizeof(WCHAR)); + utf16=malloc((len<0?n:n+1)*sizeof(WCHAR)); if (utf16) + { MultiByteToWideChar(CP_UTF8,0,utf8,len,utf16,n); + if (len>=0) + utf16[n]=0; + } } else utf16=NULL;