Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
畅游知识海洋
json
提交
6cc2d58d
J
json
项目概览
畅游知识海洋
/
json
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
json
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6cc2d58d
编写于
11月 22, 2016
作者:
N
Niels
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
🐛
hopefully fixing the crashes on Linux (#365)
上级
f620d749
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
12 addition
and
22 deletion
+12
-22
src/json.hpp
src/json.hpp
+6
-11
src/json.hpp.re2c
src/json.hpp.re2c
+6
-11
未找到文件。
src/json.hpp
浏览文件 @
6cc2d58d
...
...
@@ -8733,10 +8733,7 @@ basic_json_parser_66:
if
(
m_start
!=
reinterpret_cast
<
const
lexer_char_t
*>
(
m_line_buffer
.
data
()))
{
// copy unprocessed characters to line buffer
m_line_buffer
.
clear
();
m_line_buffer
.
append
(
reinterpret_cast
<
const
typename
string_t
::
value_type
*>
(
m_start
),
static_cast
<
size_t
>
(
m_limit
-
m_start
));
m_line_buffer
.
assign
(
m_start
,
m_limit
);
m_cursor
=
m_limit
;
}
...
...
@@ -8842,18 +8839,16 @@ basic_json_parser_66:
// iterate the result between the quotes
for
(
const
lexer_char_t
*
i
=
m_start
+
1
;
i
<
m_cursor
-
1
;
++
i
)
{
// number of non-escaped characters
const
size_t
n
=
static_cast
<
size_t
>
(
std
::
find
(
i
,
m_cursor
-
1
,
'\\'
)
-
i
);
if
(
n
!=
0
)
// find next escape character
auto
e
=
std
::
find
(
i
,
m_cursor
-
1
,
'\\'
);
if
(
e
!=
i
)
{
result
.
append
(
reinterpret_cast
<
const
typename
string_t
::
value_type
*>
(
i
),
n
);
i
+=
n
-
1
;
// -1 because will
++i
result
.
append
(
i
,
e
);
i
=
e
-
1
;
// -1 because of
++i
}
else
{
// processing escaped character
// read next character
++
i
;
...
...
src/json.hpp.re2c
浏览文件 @
6cc2d58d
...
...
@@ -7882,10 +7882,7 @@ class basic_json
if (m_start != reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()))
{
// copy unprocessed characters to line buffer
m_line_buffer.clear();
m_line_buffer.append(
reinterpret_cast<const typename string_t::value_type*>(m_start),
static_cast<size_t>(m_limit - m_start));
m_line_buffer.assign(m_start, m_limit);
m_cursor = m_limit;
}
...
...
@@ -7991,18 +7988,16 @@ class basic_json
// iterate the result between the quotes
for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i)
{
// number of non-escaped characters
const size_t n = static_cast<size_t>(std::find(i, m_cursor - 1, '\\') - i);
if (n != 0)
// find next escape character
auto e = std::find(i, m_cursor - 1, '\\');
if (e != i)
{
result.append(
reinterpret_cast<const typename string_t::value_type*>(i), n
);
i
+= n - 1; // -1 because will
++i
result.append(
i, e
);
i
= e - 1; // -1 because of
++i
}
else
{
// processing escaped character
// read next character
++i;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录