Author: stefanct Date: Thu May 8 00:07:23 2014 New Revision: 1788 URL: http://flashrom.org/trac/flashrom/changeset/1788
Log: Remove programmer_shutdown() from doit().
Because the programmer initialization that has to be called way earlier and independently elsewhere, it does not make a lot of sense to deinit within doit(). Also, free the logfile name at the end of main() to catch more execution paths and because this moves it to the other cleanup instructions.
Signed-off-by: Stefan Tauner stefan.tauner@alumni.tuwien.ac.at Acked-by: Stefan Tauner stefan.tauner@alumni.tuwien.ac.at
Modified: trunk/cli_classic.c trunk/flashrom.c
Modified: trunk/cli_classic.c ============================================================================== --- trunk/cli_classic.c Wed May 7 17:25:04 2014 (r1787) +++ trunk/cli_classic.c Thu May 8 00:07:23 2014 (r1788) @@ -338,8 +338,7 @@ if (logfile && check_filename(logfile, "log")) cli_classic_abort_usage(); if (logfile && open_logfile(logfile)) - return 1; - free(logfile); + cli_classic_abort_usage(); #endif /* !STANDALONE */
#if CONFIG_PRINT_WIKI == 1 @@ -522,8 +521,6 @@ */ programmer_delay(100000); ret |= doit(fill_flash, force, filename, read_it, write_it, erase_it, verify_it); - /* Note: doit() already calls programmer_shutdown(). */ - goto out;
out_shutdown: programmer_shutdown(); @@ -539,6 +536,7 @@ free((char *)chip_to_probe); /* Silence! Freeing is not modifying contents. */ chip_to_probe = NULL; #ifndef STANDALONE + free(logfile); ret |= close_logfile(); #endif /* !STANDALONE */ return ret;
Modified: trunk/flashrom.c ============================================================================== --- trunk/flashrom.c Wed May 7 17:25:04 2014 (r1787) +++ trunk/flashrom.c Thu May 8 00:07:23 2014 (r1788) @@ -413,6 +413,11 @@ return ret; }
+/** Calls registered shutdown functions and resets internal programmer-related variables. + * Calling it is safe even without previous initialization, but further interactions with programmer support + * require a call to programmer_init() (afterwards). + * + * @return The OR-ed result values of all shutdown functions (i.e. 0 on success). */ int programmer_shutdown(void) { int ret = 0; @@ -1913,14 +1918,12 @@
if (chip_safety_check(flash, force, read_it, write_it, erase_it, verify_it)) { msg_cerr("Aborting.\n"); - ret = 1; - goto out_nofree; + return 1; }
if (normalize_romentries(flash)) { msg_cerr("Requested regions can not be handled. Aborting.\n"); - ret = 1; - goto out_nofree; + return 1; }
/* Given the existence of read locks, we want to unlock for read, @@ -1930,8 +1933,7 @@ flash->chip->unlock(flash);
if (read_it) { - ret = read_flash_to_file(flash, filename); - goto out_nofree; + return read_flash_to_file(flash, filename); }
oldcontents = malloc(size); @@ -2048,7 +2050,5 @@ out: free(oldcontents); free(newcontents); -out_nofree: - programmer_shutdown(); return ret; }