Skip to content

Commit 3d0ac44

Browse files
committed
add null message type, fix crash when null message cames
1 parent bbbc1e3 commit 3d0ac44

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/internal/sio_packet.cpp

+14
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ namespace sio
2424
val.SetBool(msg.get_bool());
2525
}
2626

27+
void accept_null_message(Value& val)
28+
{
29+
val.SetNull();
30+
}
31+
2732
void accept_int_message(int_message const& msg, Value& val)
2833
{
2934
val.SetInt64(msg.get_int());
@@ -105,6 +110,11 @@ namespace sio
105110
accept_bool_message(*(static_cast<const bool_message*>(msg_ptr)), val);
106111
break;
107112
}
113+
case message::flag_null:
114+
{
115+
accept_null_message(val);
116+
break;
117+
}
108118
case message::flag_binary:
109119
{
110120
accept_binary_message(*(static_cast<const binary_message*>(msg_ptr)), val,doc,buffers);
@@ -177,6 +187,10 @@ namespace sio
177187
{
178188
return bool_message::create(value.GetBool());
179189
}
190+
else if(value.IsNull())
191+
{
192+
return null_message::create();
193+
}
180194
return message::ptr();
181195
}
182196

src/sio_message.h

+17-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ namespace sio
2727
flag_binary,
2828
flag_array,
2929
flag_object,
30-
flag_boolean
30+
flag_boolean,
31+
flag_null
3132
};
3233

3334
virtual ~message(){};
@@ -113,6 +114,21 @@ namespace sio
113114
message(flag f):_flag(f){}
114115
};
115116

117+
class null_message : public message
118+
{
119+
protected:
120+
null_message()
121+
:message(flag_null)
122+
{
123+
}
124+
125+
public:
126+
static message::ptr create()
127+
{
128+
return ptr(new null_message());
129+
}
130+
};
131+
116132
class bool_message : public message
117133
{
118134
bool _v;

0 commit comments

Comments
 (0)