Commit 43f983f3 authored by Davis King's avatar Davis King

Fixed a bug which could potentially occur when empty std::vector<char>

or std::vector<unsigned char> were serialized.
parent 721d55a6
...@@ -893,6 +893,7 @@ namespace dlib ...@@ -893,6 +893,7 @@ namespace dlib
{ {
const unsigned long size = static_cast<unsigned long>(item.size()); const unsigned long size = static_cast<unsigned long>(item.size());
serialize(size,out); serialize(size,out);
if (item.size() != 0)
out.write(&item[0], item.size()); out.write(&item[0], item.size());
} }
catch (serialization_error& e) catch (serialization_error& e)
...@@ -910,6 +911,7 @@ namespace dlib ...@@ -910,6 +911,7 @@ namespace dlib
unsigned long size; unsigned long size;
deserialize(size,in); deserialize(size,in);
item.resize(size); item.resize(size);
if (item.size() != 0)
in.read(&item[0], item.size()); in.read(&item[0], item.size());
} }
catch (serialization_error& e) catch (serialization_error& e)
...@@ -928,6 +930,7 @@ namespace dlib ...@@ -928,6 +930,7 @@ namespace dlib
{ {
const unsigned long size = static_cast<unsigned long>(item.size()); const unsigned long size = static_cast<unsigned long>(item.size());
serialize(size,out); serialize(size,out);
if (item.size() != 0)
out.write((char*)&item[0], item.size()); out.write((char*)&item[0], item.size());
} }
catch (serialization_error& e) catch (serialization_error& e)
...@@ -945,6 +948,7 @@ namespace dlib ...@@ -945,6 +948,7 @@ namespace dlib
unsigned long size; unsigned long size;
deserialize(size,in); deserialize(size,in);
item.resize(size); item.resize(size);
if (item.size() != 0)
in.read((char*)&item[0], item.size()); in.read((char*)&item[0], item.size());
} }
catch (serialization_error& e) catch (serialization_error& e)
......
...@@ -528,6 +528,14 @@ namespace ...@@ -528,6 +528,14 @@ namespace
{ {
DLIB_TEST(a[i] == b[i]); DLIB_TEST(a[i] == b[i]);
} }
std::vector<T> c;
sout.str("");
dlib::serialize(c, sout);
sin.str(sout.str());
dlib::deserialize(a, sin);
DLIB_TEST(a.size() == 0);
DLIB_TEST(c.size() == 0);
} }
void test_vector_bool ( void test_vector_bool (
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment