param: attempt to align the set_variable_helper with lp_do_parameter
authorGarming Sam <garming@catalyst.net.nz>
Wed, 7 May 2014 23:57:28 +0000 (11:57 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 7 Jul 2014 21:32:35 +0000 (23:32 +0200)
This should allow some of it to be factored out into lib/param.

Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Nadezhda Ivanova <nivanova@samba.org>
Change-Id: I7d0b3b4114c73aeaf9bf63e8c5fcd0a9d00cfc00

source3/param/loadparm.c

index e1f52fdfe5c8a2cc44a8948c68390972798dfe14..e350b878051b111d6153a76e3b83bf5b1551f81a 100644 (file)
@@ -2641,6 +2641,8 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
                return ok;
        }
 
+       TALLOC_FREE(frame);
+
        /* now switch on the type of variable it is */
        switch (parm_table[parmnum].type)
        {
@@ -2664,7 +2666,6 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
                        i = sscanf(pszParmValue, "%o", (int *)parm_ptr);
                        if ( i != 1 ) {
                            DEBUG ( 0, ("Invalid octal number %s\n", pszParmName ));
-                           TALLOC_FREE(frame);
                                return false;
                        }
                        break;
@@ -2740,7 +2741,6 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
                }
                case P_ENUM:
                        if (!lp_set_enum_parm(&parm_table[parmnum], pszParmValue, (int*)parm_ptr)) {
-                               TALLOC_FREE(frame);
                                return false;
                        }
                        break;
@@ -2748,7 +2748,6 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
                        break;
        }
 
-       TALLOC_FREE(frame);
        return true;
 }