Loading src/tool_cfgable.c +17 −2 Original line number Diff line number Diff line Loading @@ -153,6 +153,21 @@ static void free_config_fields(struct Configurable *config) void config_free(struct Configurable *config) { free_config_fields(config); free(config); struct Configurable *last = config; /* Find the last config structure */ while(last->next) last = last->next; /* Free each of the structures in reverse order */ do { struct Configurable *prev = last->prev; if(prev) last->easy = NULL; free_config_fields(last); free(last); last = prev; } while(last); } src/tool_cfgable.h +5 −2 Original line number Diff line number Diff line Loading @@ -214,7 +214,10 @@ struct Configurable { bool test_event_based; #endif char *xoauth2_bearer; /* XOAUTH2 bearer token */ }; /* struct Configurable */ struct Configurable* prev; struct Configurable* next; /* Always last in the struct */ }; void config_init(struct Configurable* config); void config_free(struct Configurable* config); Loading src/tool_getparam.c +28 −2 Original line number Diff line number Diff line Loading @@ -1859,7 +1859,29 @@ ParameterError parse_args(struct Configurable *config, int argc, for(i = 1, stillflags = TRUE; i < argc && !result; i++) { orig_opt = argv[i]; if(stillflags && ('-' == argv[i][0])) { if(curlx_strequal(":", argv[i]) && ((config->url_list && config->url_list->url) || config->list_engines)) { /* Allocate the next config */ config->next = malloc(sizeof(struct Configurable)); if(config->next) { /* Initialise the newly created config */ config_init(config->next); /* Copy the easy handle */ config->next->easy = config->easy; /* Move onto the new config */ config->next->prev = config; config = config->next; /* Reset the flag indicator */ stillflags = TRUE; } else result = PARAM_NO_MEM; } else if(stillflags && ('-' == argv[i][0])) { char *nextarg; bool passarg; char *flag = argv[i]; Loading @@ -1886,7 +1908,11 @@ ParameterError parse_args(struct Configurable *config, int argc, if(result && result != PARAM_HELP_REQUESTED) { const char *reason = param2text(result); if(!curlx_strequal(":", orig_opt)) helpf(config->errors, "option %s: %s\n", orig_opt, reason); else helpf(config->errors, "%s\n", reason); } return result; Loading src/tool_main.c +1 −1 Original line number Diff line number Diff line Loading @@ -196,7 +196,7 @@ int main(int argc, char *argv[]) tool_pressanykey(); #endif /* Free the config structure */ /* Free the config structures */ config_free(config); config = NULL; } Loading tests/data/test815 +1 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ imap IMAP delete message (CUSTOMREQUEST) </name> <command> imap://%HOSTIP:%IMAPPORT/815 -X 'STORE 123 +Flags \Deleted' -Q -CLOSE -u user:secret imap://%HOSTIP:%IMAPPORT/815 -X 'STORE 123 +Flags \Deleted' -u user:secret : imap://%HOSTIP:%IMAPPORT/815 -X CLOSE </command> </client> Loading Loading
src/tool_cfgable.c +17 −2 Original line number Diff line number Diff line Loading @@ -153,6 +153,21 @@ static void free_config_fields(struct Configurable *config) void config_free(struct Configurable *config) { free_config_fields(config); free(config); struct Configurable *last = config; /* Find the last config structure */ while(last->next) last = last->next; /* Free each of the structures in reverse order */ do { struct Configurable *prev = last->prev; if(prev) last->easy = NULL; free_config_fields(last); free(last); last = prev; } while(last); }
src/tool_cfgable.h +5 −2 Original line number Diff line number Diff line Loading @@ -214,7 +214,10 @@ struct Configurable { bool test_event_based; #endif char *xoauth2_bearer; /* XOAUTH2 bearer token */ }; /* struct Configurable */ struct Configurable* prev; struct Configurable* next; /* Always last in the struct */ }; void config_init(struct Configurable* config); void config_free(struct Configurable* config); Loading
src/tool_getparam.c +28 −2 Original line number Diff line number Diff line Loading @@ -1859,7 +1859,29 @@ ParameterError parse_args(struct Configurable *config, int argc, for(i = 1, stillflags = TRUE; i < argc && !result; i++) { orig_opt = argv[i]; if(stillflags && ('-' == argv[i][0])) { if(curlx_strequal(":", argv[i]) && ((config->url_list && config->url_list->url) || config->list_engines)) { /* Allocate the next config */ config->next = malloc(sizeof(struct Configurable)); if(config->next) { /* Initialise the newly created config */ config_init(config->next); /* Copy the easy handle */ config->next->easy = config->easy; /* Move onto the new config */ config->next->prev = config; config = config->next; /* Reset the flag indicator */ stillflags = TRUE; } else result = PARAM_NO_MEM; } else if(stillflags && ('-' == argv[i][0])) { char *nextarg; bool passarg; char *flag = argv[i]; Loading @@ -1886,7 +1908,11 @@ ParameterError parse_args(struct Configurable *config, int argc, if(result && result != PARAM_HELP_REQUESTED) { const char *reason = param2text(result); if(!curlx_strequal(":", orig_opt)) helpf(config->errors, "option %s: %s\n", orig_opt, reason); else helpf(config->errors, "%s\n", reason); } return result; Loading
src/tool_main.c +1 −1 Original line number Diff line number Diff line Loading @@ -196,7 +196,7 @@ int main(int argc, char *argv[]) tool_pressanykey(); #endif /* Free the config structure */ /* Free the config structures */ config_free(config); config = NULL; } Loading
tests/data/test815 +1 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ imap IMAP delete message (CUSTOMREQUEST) </name> <command> imap://%HOSTIP:%IMAPPORT/815 -X 'STORE 123 +Flags \Deleted' -Q -CLOSE -u user:secret imap://%HOSTIP:%IMAPPORT/815 -X 'STORE 123 +Flags \Deleted' -u user:secret : imap://%HOSTIP:%IMAPPORT/815 -X CLOSE </command> </client> Loading