diff --git a/mysys_ssl/my_default.cc b/mysys_ssl/my_default.cc index 2bb3df081e48..d069ce182692 100644 --- a/mysys_ssl/my_default.cc +++ b/mysys_ssl/my_default.cc @@ -663,6 +663,7 @@ int my_load_defaults(const char *conf_file, const char **groups, &args_used, handle_default_option, (void *) &ctx, dirs, false, found_no_defaults))) { + delete_dynamic(&args); free_root(&alloc,MYF(0)); DBUG_RETURN(error); } @@ -675,6 +676,7 @@ int my_load_defaults(const char *conf_file, const char **groups, handle_default_option, (void *) &ctx, dirs, true, found_no_defaults))) { + delete_dynamic(&args); free_root(&alloc, MYF(0)); DBUG_RETURN(error); } @@ -685,7 +687,10 @@ int my_load_defaults(const char *conf_file, const char **groups, */ if (!(ptr=(char*) alloc_root(&alloc,sizeof(alloc)+ (args.elements + *argc + 1 + args_sep) *sizeof(char*)))) + { + delete_dynamic(&args); goto err; + } res= (char**) (ptr+sizeof(alloc)); /* copy name + found arguments + command line arguments to new array */