This is an automated email from Gerrit.

Antonio Borneo ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/6188

-- gerrit

commit 31b71824d385c39d2baf13ccfba30a3a52d31e24
Author: Antonio Borneo <[email protected]>
Date:   Sun Apr 25 20:38:58 2021 +0200

    helper/command: fix memory leak on malloc() fail
    
    If malloc() fails, the just allocated Jim_Obj will leaks.
    
    Move Jim_IncrRefCount() before the malloc() and deallocate the Jim
    object with Jim_DecrRefCount() on malloc() fail.
    
    While there, add the 'out of memory' log and fix the CamelCase
    name of the symbol tclOutput.
    
    Change-Id: Ic733db229d5aa5d477d758ea9cb88cd81d7542cd
    Signed-off-by: Antonio Borneo <[email protected]>

diff --git a/src/helper/command.c b/src/helper/command.c
index 80e297b..99cad68 100644
--- a/src/helper/command.c
+++ b/src/helper/command.c
@@ -83,17 +83,21 @@ static struct log_capture_state 
*command_log_capture_start(Jim_Interp *interp)
 {
        /* capture log output and return it. A garbage collect can
         * happen, so we need a reference count to this object */
-       Jim_Obj *tclOutput = Jim_NewStringObj(interp, "", 0);
-       if (NULL == tclOutput)
+       Jim_Obj *jim_output = Jim_NewStringObj(interp, "", 0);
+       if (!jim_output)
                return NULL;
 
+       Jim_IncrRefCount(jim_output);
+
        struct log_capture_state *state = malloc(sizeof(*state));
-       if (NULL == state)
+       if (!state) {
+               LOG_ERROR("Out of memory");
+               Jim_DecrRefCount(interp, jim_output);
                return NULL;
+       }
 
        state->interp = interp;
-       Jim_IncrRefCount(tclOutput);
-       state->output = tclOutput;
+       state->output = jim_output;
 
        log_add_callback(tcl_output, state);
 

-- 

Reply via email to