Complete memory management for the C implementation
---------------------------------------------------
Key: AVRO-367
URL: https://issues.apache.org/jira/browse/AVRO-367
Project: Avro
Issue Type: Improvement
Components: c
Reporter: Matt Massie
Fix For: 1.3.0
This patch completes memory management for the C implementation.
* All schema and datum objects are now freed when dereferenced
* Four new methods have been added {{avro_wrapstring}}, {{avro_wrapbytes}},
{{avro_givestring}}, and {{avro_givebytes}}. These new methods allow C
developers to explicitly state if they want {{libavro}} to copy bytes/string
(the default), "wrap" them with no memory management or "give" them to
{{libavro}} to manage. This allows for less buffer copying when decoding data.
* Issues with type punning have been resolved to prevent compiler warnings
* The {{map}} and {{record}} data structures now implement management correctly.
* A new valgrind test is added and runs during {{make check}} if valgrind is
found on the build system.
A future optimization will be to have a stack of allocated objects for each obj
type instead of always using malloc() and free().
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.