diff options
| author | frsyuki <frsyuki@users.sourceforge.jp> | 2010-02-02 10:52:42 +0900 |
|---|---|---|
| committer | frsyuki <frsyuki@users.sourceforge.jp> | 2010-02-02 10:52:42 +0900 |
| commit | 7df60b259b55b6294c19315350ec312809107117 (patch) | |
| tree | 0e8c2ef3ff2a409169363f23cde83a1668cfd7a3 /cpp | |
| parent | 34b3bbc8839f63e3e624dc0ce42525657cdcdfa7 (diff) | |
| download | msgpack-python-7df60b259b55b6294c19315350ec312809107117.tar.gz | |
MSVC2005 compatibility (@hotpepsi++)
Diffstat (limited to 'cpp')
| -rw-r--r-- | cpp/type/vector.hpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/cpp/type/vector.hpp b/cpp/type/vector.hpp index 754cdc0..385d070 100644 --- a/cpp/type/vector.hpp +++ b/cpp/type/vector.hpp @@ -29,11 +29,15 @@ inline std::vector<T>& operator>> (object o, std::vector<T>& v) { if(o.type != type::ARRAY) { throw type_error(); } v.resize(o.via.array.size); - object* p = o.via.array.ptr; - object* const pend = o.via.array.ptr + o.via.array.size; - T* it = &v.front(); - for(; p < pend; ++p, ++it) { - p->convert(it); + if(o.via.array.size > 0) { + object* p = o.via.array.ptr; + object* const pend = o.via.array.ptr + o.via.array.size; + T* it = &v[0]; + do { + p->convert(it); + ++p; + ++it; + } while(p < pend); } return v; } |
