commit f657ab584c92a3b15b956f2c3552a3075ee81e38
Author: Oswald Buddenhagen <o...@kde.org>
Date:   Sun Mar 27 12:34:25 2011 +0200

    centralize imap_cmd disposal

 src/drv_imap.c |   31 ++++++++++++++-----------------
 1 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/src/drv_imap.c b/src/drv_imap.c
index b9c6035..10d5d35 100644
--- a/src/drv_imap.c
+++ b/src/drv_imap.c
@@ -199,6 +199,16 @@ new_imap_cmd( int size )
        cmdp->gen.callback = cb; \
        cmdp->gen.callback_aux = aux;
 
+static int
+done_imap_cmd( imap_store_t *ctx, struct imap_cmd *cmd, int response )
+{
+       int ret = cmd->param.done( ctx, cmd, response );
+       free( cmd->param.data );
+       free( cmd->cmd );
+       free( cmd );
+       return ret;
+}
+
 static struct imap_cmd *
 v_submit_imap_cmd( imap_store_t *ctx, struct imap_cmd *cmd,
                    const char *fmt, va_list ap )
@@ -259,10 +269,7 @@ v_submit_imap_cmd( imap_store_t *ctx, struct imap_cmd *cmd,
   bail:
        ctx->gen.bad_callback( ctx->gen.bad_callback_aux );
   bail2:
-       cmd->param.done( ctx, cmd, RESP_CANCEL );
-       free( cmd->param.data );
-       free( cmd->cmd );
-       free( cmd );
+       done_imap_cmd( ctx, cmd, RESP_CANCEL );
        return NULL;
 }
 
@@ -286,10 +293,7 @@ cancel_submitted_imap_cmds( imap_store_t *ctx )
        while ((cmd = ctx->in_progress)) {
                ctx->in_progress = cmd->next;
                /* don't update num_in_progress and in_progress_append - store 
is dead */
-               cmd->param.done( ctx, cmd, RESP_CANCEL );
-               free( cmd->param.data );
-               free( cmd->cmd );
-               free( cmd );
+               done_imap_cmd( ctx, cmd, RESP_CANCEL );
        }
 }
 
@@ -893,11 +897,8 @@ get_cmd_result( imap_store_t *ctx, struct imap_cmd *tcmd )
                                resp = resp2;
                        if (resp == RESP_CANCEL)
                                ctx->gen.bad_callback( 
ctx->gen.bad_callback_aux );
-                       if (cmdp->param.done( ctx, cmdp, resp ) < 0)
+                       if (done_imap_cmd( ctx, cmdp, resp ) < 0)
                                resp = RESP_CANCEL;
-                       free( cmdp->param.data );
-                       free( cmdp->cmd );
-                       free( cmdp );
                        if (resp == RESP_CANCEL || !tcmd || tcmd == cmdp)
                                return resp;
                }
@@ -913,11 +914,7 @@ get_cmd_result_p2( imap_store_t *ctx, struct imap_cmd 
*cmd, int response )
        struct imap_cmd *ocmd = cmdp->orig_cmd;
 
        if (response != RESP_OK) {
-               int ret = ocmd->param.done( ctx, ocmd, response );
-               free( ocmd->param.data );
-               free( ocmd->cmd );
-               free( ocmd );
-               return ret;
+               return done_imap_cmd( ctx, ocmd, response );
        } else {
                ctx->uidnext = 0;
                ocmd->param.create = 0;

------------------------------------------------------------------------------
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
_______________________________________________
isync-devel mailing list
isync-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/isync-devel

Reply via email to