From b290cb5de001bcbf73b8ccea7651d78f12d512ef Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Fri, 21 Jul 2017 15:47:10 +0900 Subject: [PATCH] eina_slstr: Fix leak in an error case This function takes ownership of the incoming strbuf --- src/lib/eina/eina_slstr.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib/eina/eina_slstr.c b/src/lib/eina/eina_slstr.c index 5367db010f..143965a7e3 100644 --- a/src/lib/eina/eina_slstr.c +++ b/src/lib/eina/eina_slstr.c @@ -172,7 +172,7 @@ eina_slstr_strbuf_new(Eina_Strbuf *string) if (!string) return NULL; fq = _slstr_freeq_get(EINA_FALSE); - EINA_SAFETY_ON_NULL_RETURN_VAL(fq, NULL); + EINA_SAFETY_ON_NULL_GOTO(fq, error); str = eina_strbuf_release(string); #ifdef DEBUG @@ -180,6 +180,10 @@ eina_slstr_strbuf_new(Eina_Strbuf *string) #endif eina_freeq_ptr_add(fq, str, free, len); return str; + +error: + eina_strbuf_free(string); + return NULL; } EAPI Eina_Slstr *