Skip to content

Commit 02aab8b

Browse files
committed
fix computation of memsize for node lists
1 parent 0f97174 commit 02aab8b

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

templates/src/node.c.erb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
102102
case <%= node.type %>: {
103103
yp_<%= node.human %>_t *cast = (yp_<%= node.human %>_t *) node;
104104
memsize->memsize += sizeof(*cast);
105+
<%- if node.fields.any? { |f| f.is_a?(YARP::NodeListField) } -%>
106+
// Node lists will add in their own sizes below.
107+
memsize->memsize -= sizeof(yp_node_list_t) * <%= node.fields.count { |f| f.is_a?(YARP::NodeListField) } %>;
108+
<%- end -%>
105109
<%- node.fields.each do |field| -%>
106110
<%- case field -%>
107111
<%- when YARP::ConstantField, YARP::OptionalConstantField, YARP::UInt32Field, YARP::FlagsField, YARP::LocationField, YARP::OptionalLocationField -%>
@@ -114,7 +118,7 @@ yp_node_memsize_node(yp_node_t *node, yp_memsize_t *memsize) {
114118
<%- when YARP::StringField -%>
115119
memsize->memsize += yp_string_memsize(&cast-><%= field.name %>);
116120
<%- when YARP::NodeListField -%>
117-
yp_node_list_memsize(&cast-><%= field.name %>, memsize);
121+
memsize->memsize += yp_node_list_memsize(&cast-><%= field.name %>, memsize);
118122
<%- when YARP::ConstantListField -%>
119123
memsize->memsize += yp_constant_id_list_memsize(&cast-><%= field.name %>);
120124
<%- else -%>

0 commit comments

Comments
 (0)