Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
26710be7
T
Third Party Musl
项目概览
OpenHarmony
/
Third Party Musl
大约 1 年 前同步成功
通知
37
Star
125
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Musl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
26710be7
编写于
6月 18, 2012
作者:
R
Rich Felker
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix multiple iconv bugs reading utf-16/32 and wchar_t
上级
673633c6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
8 deletion
+8
-8
src/locale/iconv.c
src/locale/iconv.c
+8
-8
未找到文件。
src/locale/iconv.c
浏览文件 @
26710be7
...
...
@@ -12,8 +12,8 @@
#define UTF_32LE 0303
#define UCS2BE 0304
#define UCS2LE 0305
#define
US_ASCII
0306
#define
WCHAR_T
0307
#define
WCHAR_T
0306
#define
US_ASCII
0307
#define UTF_8 0310
#define EUC_JP 0320
#define SHIFT_JIS 0321
...
...
@@ -34,14 +34,14 @@
static
const
unsigned
char
charmaps
[]
=
"utf8
\0\0\310
"
"wchart
\0\0\30
7
"
"wchart
\0\0\30
6
"
"ucs2
\0
ucs2be
\0\0\304
"
"ucs2le
\0\0\305
"
"utf16
\0
utf16be
\0\0\302
"
"utf16le
\0\0\301
"
"ucs4
\0
ucs4be
\0
utf32
\0
utf32be
\0\0\300
"
"ucs4le
\0
utf32le
\0\0\303
"
"ascii
\0
usascii
\0
iso646
\0
iso646us
\0\0\30
6
"
"ascii
\0
usascii
\0
iso646
\0
iso646us
\0\0\30
7
"
"eucjp
\0\0\320
"
"shiftjis
\0
sjis
\0\0\321
"
"gb18030
\0\0\330
"
...
...
@@ -161,7 +161,7 @@ size_t iconv(iconv_t cd0, char **in, size_t *inb, char **out, size_t *outb)
c
=
*
(
unsigned
char
*
)
*
in
;
l
=
1
;
if
(
c
>=
128
)
switch
(
type
)
{
if
(
c
>=
128
||
type
-
UTF_32BE
<
7U
)
switch
(
type
)
{
case
UTF_8
:
l
=
mbrtowc_utf8
(
&
wc
,
*
in
,
*
inb
,
&
st
);
if
(
!
l
)
l
++
;
...
...
@@ -196,9 +196,9 @@ size_t iconv(iconv_t cd0, char **in, size_t *inb, char **out, size_t *outb)
if
(
type
-
UCS2BE
<
2U
)
goto
ilseq
;
l
=
4
;
if
(
*
inb
<
4
)
goto
starved
;
d
=
get_16
((
void
*
)(
*
in
+
2
),
from
);
if
((
unsigned
)(
c
-
0xdc00
)
>=
0x400
)
goto
ilseq
;
c
=
((
c
-
0xd
800
)
<<
10
)
|
(
d
-
0xdc00
);
d
=
get_16
((
void
*
)(
*
in
+
2
),
type
);
if
((
unsigned
)(
d
-
0xdc00
)
>=
0x400
)
goto
ilseq
;
c
=
((
c
-
0xd
7c0
)
<<
10
)
+
(
d
-
0xdc00
);
}
break
;
case
SHIFT_JIS
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录