@@ -118,26 +118,24 @@ impl ServerAccumulator {
118118 }
119119
120120 fn new_from_serialized_config (
121- mut serialized_aggregation_config : cxx:: UniquePtr < cxx:: CxxString > ,
121+ serialized_aggregation_config : cxx:: UniquePtr < cxx:: CxxString > ,
122122 ) -> Result < Self , StatusError > {
123123 let serialized_aggregation_config_proto = AggregationConfigProto :: parse (
124124 serialized_aggregation_config. as_bytes ( ) ,
125125 )
126126 . map_err ( |e| status:: internal ( format ! ( "Failed to parse AggregationConfigProto: {}" , e) ) ) ?;
127- serialized_aggregation_config = cxx:: UniquePtr :: null ( ) ; // Release memory.
128127 let aggregation_config =
129128 AggregationConfig :: from_proto ( serialized_aggregation_config_proto, ( ) ) ?;
130129 Self :: new ( aggregation_config)
131130 }
132131
133132 fn new_from_serialized_state (
134- mut serialized_server_accumulator : cxx:: UniquePtr < cxx:: CxxString > ,
133+ serialized_server_accumulator : cxx:: UniquePtr < cxx:: CxxString > ,
135134 ) -> Result < Self , StatusError > {
136135 let serialized_server_accumulator_proto = ServerAccumulatorState :: parse (
137136 serialized_server_accumulator. as_bytes ( ) ,
138137 )
139138 . map_err ( |e| status:: internal ( format ! ( "Failed to parse ServerAccumulatorState: {}" , e) ) ) ?;
140- serialized_server_accumulator = cxx:: UniquePtr :: null ( ) ; // Release memory.
141139 Self :: from_proto ( serialized_server_accumulator_proto, ( ) )
142140 }
143141
@@ -174,16 +172,17 @@ impl ServerAccumulator {
174172
175173 fn process_client_messages_serialized (
176174 & mut self ,
177- mut client_messages : cxx:: UniquePtr < cxx:: CxxString > ,
175+ client_messages : cxx:: UniquePtr < cxx:: CxxString > ,
178176 ) -> Result < ( ) , StatusError > {
179177 let client_messages_proto = ClientMessageList :: parse ( client_messages. as_bytes ( ) )
180178 . map_err ( |e| status:: internal ( format ! ( "Failed to parse ClientMessageList: {}" , e) ) ) ?;
181- client_messages = cxx :: UniquePtr :: null ( ) ; // Release memory.
179+ std :: mem :: drop ( client_messages ) ; // Release memory early. `client_messages` can be huge .
182180 let client_messages: Result < Vec < _ > , _ > = client_messages_proto
183181 . client_messages ( )
184182 . iter ( )
185183 . map ( |m| ClientMessage :: from_proto ( m, & self . server ) )
186184 . collect ( ) ;
185+ std:: mem:: drop ( client_messages_proto) ;
187186 self . process_client_messages ( client_messages?) ;
188187 Ok ( ( ) )
189188 }
0 commit comments