Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
yaml-cpp
Commits
0305ad13
Commit
0305ad13
authored
Jul 10, 2013
by
Jesse Beder
Browse files
Fixed crash when emitting empty node
parent
dd0f2577
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
17 additions
and
5 deletions
+17
-5
src/nodeevents.cpp
src/nodeevents.cpp
+5
-3
src/nodeevents.h
src/nodeevents.h
+1
-1
src/ostream_wrapper.cpp
src/ostream_wrapper.cpp
+1
-1
test/new-api/nodetests.cpp
test/new-api/nodetests.cpp
+10
-0
No files found.
src/nodeevents.cpp
View file @
0305ad13
...
...
@@ -19,9 +19,10 @@ namespace YAML
return
it
->
second
;
}
NodeEvents
::
NodeEvents
(
const
Node
&
node
)
:
m_pMemory
(
node
.
m_pMemory
),
m_root
(
*
node
.
m_pNode
)
NodeEvents
::
NodeEvents
(
const
Node
&
node
)
:
m_pMemory
(
node
.
m_pMemory
),
m_root
(
node
.
m_pNode
)
{
Setup
(
m_root
);
if
(
m_root
)
Setup
(
*
m_root
);
}
void
NodeEvents
::
Setup
(
const
detail
::
node
&
node
)
...
...
@@ -47,7 +48,8 @@ namespace YAML
AliasManager
am
;
handler
.
OnDocumentStart
(
Mark
());
Emit
(
m_root
,
handler
,
am
);
if
(
m_root
)
Emit
(
*
m_root
,
handler
,
am
);
handler
.
OnDocumentEnd
();
}
...
...
src/nodeevents.h
View file @
0305ad13
...
...
@@ -46,7 +46,7 @@ namespace YAML
private:
detail
::
shared_memory_holder
m_pMemory
;
detail
::
node
&
m_root
;
detail
::
node
*
m_root
;
typedef
std
::
map
<
const
detail
::
node_ref
*
,
int
>
RefCount
;
RefCount
m_refCount
;
...
...
src/ostream_wrapper.cpp
View file @
0305ad13
...
...
@@ -4,7 +4,7 @@
namespace
YAML
{
ostream_wrapper
::
ostream_wrapper
()
:
m_pStream
(
0
),
m_pos
(
0
),
m_row
(
0
),
m_col
(
0
),
m_comment
(
false
)
ostream_wrapper
::
ostream_wrapper
()
:
m_buffer
(
1
),
m_pStream
(
0
),
m_pos
(
0
),
m_row
(
0
),
m_col
(
0
),
m_comment
(
false
)
{
}
...
...
test/new-api/nodetests.cpp
View file @
0305ad13
...
...
@@ -506,6 +506,15 @@ namespace Test
YAML_ASSERT
(
node
.
as
<
double
>
()
==
x
);
return
true
;
}
TEST
EmitEmptyNode
()
{
YAML
::
Node
node
;
YAML
::
Emitter
emitter
;
emitter
<<
node
;
YAML_ASSERT
(
std
::
string
(
emitter
.
c_str
())
==
""
);
return
true
;
}
}
void
RunNodeTest
(
TEST
(
*
test
)(),
const
std
::
string
&
name
,
int
&
passed
,
int
&
total
)
{
...
...
@@ -569,6 +578,7 @@ namespace Test
RunNodeTest
(
&
Node
::
ResetNode
,
"reset node"
,
passed
,
total
);
RunNodeTest
(
&
Node
::
DereferenceIteratorError
,
"dereference iterator error"
,
passed
,
total
);
RunNodeTest
(
&
Node
::
FloatingPrecision
,
"floating precision"
,
passed
,
total
);
RunNodeTest
(
&
Node
::
EmitEmptyNode
,
"emit empty node"
,
passed
,
total
);
std
::
cout
<<
"Node tests: "
<<
passed
<<
"/"
<<
total
<<
" passed
\n
"
;
return
passed
==
total
;
...
...
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