Mercurial > hg > xemacs-beta
diff src/mule-wnnfns.c @ 300:3cc9f0ebfbd1 r21-0b48
Import from CVS: tag r21-0b48
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:40:26 +0200 |
parents | c5d627a313b1 |
children | 8626e4521993 |
line wrap: on
line diff
--- a/src/mule-wnnfns.c Mon Aug 13 10:39:46 2007 +0200 +++ b/src/mule-wnnfns.c Mon Aug 13 10:40:26 2007 +0200 @@ -332,20 +332,21 @@ */ (hname, lname)) { - char envname[32]; - char langname[32]; - char hostname[32]; + char *envname; + char *langname; + char *hostname; int snum; + int size; CHECK_STRING (lname); snum = check_wnn_server_type (); switch (snum) { case WNNSERVER_J: - strcpy (langname, "ja_JP"); + langname = "ja_JP"; break; case WNNSERVER_C: - strcpy (langname, "zh_CN"); + langname = "zh_CN"; break; /* case WNNSERVER_T: @@ -353,15 +354,25 @@ break; */ case WNNSERVER_K: - strcpy (langname, "ko_KR"); + langname = "ko_KR"; break; + case -1: + default: + return Qnil; } - strncpy (envname, (char *) XSTRING_DATA (lname), 32); - if (NILP (hname)) strcpy (hostname, ""); + size = XSTRING_LENGTH (lname) > 1024 ? 1026 : XSTRING_LENGTH (lname) + 2; + envname = alloca (size); + strncpy (envname, (char *) XSTRING_DATA (lname), size-2); + envname[size-2] = '\0'; + if (NILP (hname)) hostname = ""; else { CHECK_STRING (hname); - strncpy (hostname, (char *) XSTRING_DATA (hname), 32); + size = XSTRING_LENGTH(hname) > 1024 ? 1025 : XSTRING_LENGTH(hname) + 1; + + hostname = alloca (size); + strncpy (hostname, (char *) XSTRING_DATA (hname), size-1); + hostname[size-1] = '\0'; } CHECK_STRING (lname); /* 97/4/16 jhod@po.iijnet.or.jp