summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorfrsyuki <frsyuki@users.sourceforge.jp>2010-02-02 10:52:42 +0900
committerfrsyuki <frsyuki@users.sourceforge.jp>2010-02-02 10:52:42 +0900
commit7df60b259b55b6294c19315350ec312809107117 (patch)
tree0e8c2ef3ff2a409169363f23cde83a1668cfd7a3 /cpp
parent34b3bbc8839f63e3e624dc0ce42525657cdcdfa7 (diff)
downloadmsgpack-python-7df60b259b55b6294c19315350ec312809107117.tar.gz
MSVC2005 compatibility (@hotpepsi++)
Diffstat (limited to 'cpp')
-rw-r--r--cpp/type/vector.hpp14
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;
}