lib: Allow memory to be cleaned up for error cases in ptm

ptm_lib.c had no way to cleanup after itself when an
error was detected.  This adds a function to cleanup
context in such a case.

A followup commit will use this new functionality.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2017-12-04 18:59:47 -05:00
parent d17ea5225b
commit b5f270ad09
2 changed files with 20 additions and 0 deletions

View File

@ -223,6 +223,25 @@ int ptm_lib_init_msg(ptm_lib_handle_t *hdl, int cmd_id, int type, void *in_ctxt,
return 0; return 0;
} }
int ptm_lib_cleanup_msg(ptm_lib_handle_t *hdl, void *ctxt)
{
ptm_lib_msg_ctxt_t *p_ctxt = ctxt;
csv_t *csv;
if (!p_ctxt) {
ERRLOG("%s: no context \n", __FUNCTION__);
return -1;
}
csv = p_ctxt->csv;
csv_clean(csv);
csv_free(csv);
free(p_ctxt);
return 0;
}
int ptm_lib_complete_msg(ptm_lib_handle_t *hdl, void *ctxt, char *buf, int *len) int ptm_lib_complete_msg(ptm_lib_handle_t *hdl, void *ctxt, char *buf, int *len)
{ {
ptm_lib_msg_ctxt_t *p_ctxt = ctxt; ptm_lib_msg_ctxt_t *p_ctxt = ctxt;

View File

@ -63,5 +63,6 @@ int ptm_lib_find_key_in_msg(void *, const char *, char *);
int ptm_lib_init_msg(ptm_lib_handle_t *, int, int, void *, void **); int ptm_lib_init_msg(ptm_lib_handle_t *, int, int, void *, void **);
int ptm_lib_append_msg(ptm_lib_handle_t *, void *, const char *, const char *); int ptm_lib_append_msg(ptm_lib_handle_t *, void *, const char *, const char *);
int ptm_lib_complete_msg(ptm_lib_handle_t *, void *, char *, int *); int ptm_lib_complete_msg(ptm_lib_handle_t *, void *, char *, int *);
int ptm_lib_cleanup_msg(ptm_lib_handle_t *, void *);
#endif #endif