Mercurial > emacs
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); |