From 066ecf0901d53fff0de3a5de5618d380735573b6 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Tue, 28 Mar 2023 16:27:57 -0400 Subject: [PATCH] MT#56447 add ng_buffer_auto_release Auto-cleanup wrapper for struct ng_buffer Change-Id: I4aab4efb9b10d6380b0ef9f3f854130cee03d792 --- daemon/control_ng.c | 3 +-- include/control_ng.h | 4 ++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/daemon/control_ng.c b/daemon/control_ng.c index 90e79be2d..eaf7a8208 100644 --- a/daemon/control_ng.c +++ b/daemon/control_ng.c @@ -142,7 +142,7 @@ struct ng_buffer *ng_buffer_new(struct obj *ref) { int control_ng_process(str *buf, const endpoint_t *sin, char *addr, void (*cb)(str *, str *, const endpoint_t *, void *), void *p1, struct obj *ref) { - struct ng_buffer *ngbuf; + AUTO_CLEANUP(struct ng_buffer *ngbuf, ng_buffer_auto_release) = NULL; bencode_item_t *dict, *resp; str cmd = STR_NULL, cookie, data, reply, *to_send, callid; const char *errstr, *resultstr; @@ -408,7 +408,6 @@ send_only: goto out; out: - ng_buffer_release(ngbuf); release_closed_sockets(); log_info_pop_until(&callid); return funcret; diff --git a/include/control_ng.h b/include/control_ng.h index d3deecdd9..c20f562a1 100644 --- a/include/control_ng.h +++ b/include/control_ng.h @@ -81,6 +81,10 @@ struct ng_buffer *ng_buffer_new(struct obj *ref); INLINE void ng_buffer_release(struct ng_buffer *ngbuf) { obj_put(ngbuf); } +INLINE void ng_buffer_auto_release(struct ng_buffer **ngbuf) { + if (*ngbuf) + ng_buffer_release(*ngbuf); +} extern mutex_t rtpe_cngs_lock; extern GHashTable *rtpe_cngs_hash;