aboutsummaryrefslogtreecommitdiff
path: root/ruby/ext/google/protobuf_c/encode_decode.c
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2017-08-30 11:16:57 -0700
committerBo Yang <teboring@google.com>2017-09-13 14:28:02 -0700
commita459b224b5fbc30c328715a06f95ca494f1e5d6a (patch)
tree0c56e7bbbc492fd888439c36d34187cfed53714e /ruby/ext/google/protobuf_c/encode_decode.c
parentc1dd8e85a1314a7bcb2059b842c6830d854fbefa (diff)
downloadprotobuf-a459b224b5fbc30c328715a06f95ca494f1e5d6a.tar.gz
protobuf-a459b224b5fbc30c328715a06f95ca494f1e5d6a.tar.bz2
protobuf-a459b224b5fbc30c328715a06f95ca494f1e5d6a.zip
Storing the frame on the map means we don't need the array
Diffstat (limited to 'ruby/ext/google/protobuf_c/encode_decode.c')
-rw-r--r--ruby/ext/google/protobuf_c/encode_decode.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ruby/ext/google/protobuf_c/encode_decode.c b/ruby/ext/google/protobuf_c/encode_decode.c
index 1427f4b8..edbbe6a5 100644
--- a/ruby/ext/google/protobuf_c/encode_decode.c
+++ b/ruby/ext/google/protobuf_c/encode_decode.c
@@ -288,7 +288,7 @@ static map_parse_frame_t* map_push_frame(VALUE map,
native_slot_init(handlerdata->key_field_type, &frame->key_storage);
native_slot_init(handlerdata->value_field_type, &frame->value_storage);
- Map_push_frame(map,
+ Map_set_frame(map,
TypedData_Wrap_Struct(rb_cObject, &MapParseFrame_type, frame));
return frame;
@@ -327,7 +327,7 @@ static bool endmap_handler(void *closure, const void *hd, upb_status* s) {
&frame->value_storage);
Map_index_set(frame->map, key, value);
- Map_pop_frame(frame->map);
+ Map_set_frame(frame->map, Qnil);
return true;
}