comparison src/fileio.c @ 56615:c0f488e9cb26

(make_temp_name): Handle multibyte prefixes.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sat, 07 Aug 2004 20:57:19 +0000
parents a86a4deb195d
children 00e5170987b5 1425b1df1da8 3fd4a5c21153
comparison
equal deleted inserted replaced
56614:9a3481cbb263 56615:c0f488e9cb26
884 make_temp_name (prefix, base64_p) 884 make_temp_name (prefix, base64_p)
885 Lisp_Object prefix; 885 Lisp_Object prefix;
886 int base64_p; 886 int base64_p;
887 { 887 {
888 Lisp_Object val; 888 Lisp_Object val;
889 int len; 889 int len, clen;
890 int pid; 890 int pid;
891 unsigned char *p, *data; 891 unsigned char *p, *data;
892 char pidbuf[20]; 892 char pidbuf[20];
893 int pidlen; 893 int pidlen;
894 894
919 pidbuf[2] = make_temp_name_tbl[pid & 63], pid >>= 6; 919 pidbuf[2] = make_temp_name_tbl[pid & 63], pid >>= 6;
920 pidlen = 3; 920 pidlen = 3;
921 #endif 921 #endif
922 } 922 }
923 923
924 len = SCHARS (prefix); 924 len = SBYTES (prefix); clen = SCHARS (prefix);
925 val = make_uninit_string (len + 3 + pidlen); 925 val = make_uninit_multibyte_string (clen + 3 + pidlen, len + 3 + pidlen);
926 if (!STRING_MULTIBYTE (prefix))
927 STRING_SET_UNIBYTE (val);
926 data = SDATA (val); 928 data = SDATA (val);
927 bcopy(SDATA (prefix), data, len); 929 bcopy(SDATA (prefix), data, len);
928 p = data + len; 930 p = data + len;
929 931
930 bcopy (pidbuf, p, pidlen); 932 bcopy (pidbuf, p, pidlen);