summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorfrsyuki <frsyuki@users.sourceforge.jp>2009-06-03 22:01:27 +0900
committerfrsyuki <frsyuki@users.sourceforge.jp>2009-06-03 22:01:27 +0900
commitb3846a411fb148c30cf99c7297b70fe8ad3bfaa9 (patch)
tree2c3d6d54ca271c2dd925f2dee765fcc426610b86 /cpp
parent62231983d7580231bf1e622d9e6a39c708a0a48c (diff)
downloadmsgpack-python-b3846a411fb148c30cf99c7297b70fe8ad3bfaa9.tar.gz
cpp: fix map<K, V> converter
Diffstat (limited to 'cpp')
-rw-r--r--cpp/type/map.hpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/cpp/type/map.hpp b/cpp/type/map.hpp
index c136d53..552de57 100644
--- a/cpp/type/map.hpp
+++ b/cpp/type/map.hpp
@@ -80,13 +80,13 @@ inline std::map<K, V> operator>> (object o, std::map<K, V>& v)
for(; p != pend; ++p) {
K key;
p->key.convert(&key);
- typename std::map<K,V>::iterator it(v.find(key));
- if(it != v.end()) {
+ typename std::map<K,V>::iterator it(v.lower_bound(key));
+ if(it != v.end() && !(key < it->first)) {
+ p->val.convert(&it->second);
+ } else {
V val;
p->val.convert(&val);
- it->insert( std::pair<K,V>(key, val) );
- } else {
- p->val.convert(&it->second);
+ v.insert(it, std::pair<K,V>(key, val));
}
}
return v;