Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
json
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
json
Commits
6cc2d58d
Commit
6cc2d58d
authored
Nov 22, 2016
by
Niels
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🐛
hopefully fixing the crashes on Linux (#365)
parent
f620d749
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
12 additions
and
22 deletions
+12
-22
src/json.hpp
src/json.hpp
+6
-11
src/json.hpp.re2c
src/json.hpp.re2c
+6
-11
No files found.
src/json.hpp
View file @
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
View file @
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;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment