diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2021-01-25 15:16:29 +0100 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2021-03-07 10:38:38 +0100 |
commit | 8c0a25f3b0f5ab264333c25ca30145e5f49dcb4f (patch) | |
tree | dc9f983c6c30f6ce8b2df218fb610a18da00857d /src/sim | |
parent | 22cb70fb1b2c628383c122aafcfdccd3070f269a (diff) |
Added special strdup to liboptions, to prevent memory leaks for option strings
If you are doing memory leak debugging you don't want to see any leaks when
stopping the program.
Diffstat (limited to 'src/sim')
-rw-r--r-- | src/sim/main.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/sim/main.c b/src/sim/main.c index e0124d0..5178bef 100644 --- a/src/sim/main.c +++ b/src/sim/main.c @@ -148,42 +148,42 @@ int handle_options(int short_option, int argi, char **argv) } break; case 's': - serialdev = strdup(argv[argi]); + serialdev = options_strdup(argv[argi]); break; case 'b': baudrate = atoi(argv[argi]); break; case 'E': - eeprom_name = strdup(argv[argi]); + eeprom_name = options_strdup(argv[argi]); break; case 'F': - futln = strdup(argv[argi]); + futln = options_strdup(argv[argi]); break; case OPT_SICHERUNG: - sicherung = strdup(argv[argi]); + sicherung = options_strdup(argv[argi]); break; case OPT_KARTEN: - karten = strdup(argv[argi]); + karten = options_strdup(argv[argi]); break; case OPT_SONDER: - sonder = strdup(argv[argi]); + sonder = options_strdup(argv[argi]); break; case OPT_WARTUNG: - wartung = strdup(argv[argi]); + wartung = options_strdup(argv[argi]); break; case 'P': - pin = strdup(argv[argi]); + pin = options_strdup(argv[argi]); break; case 'D': if (dir_count == MAX_DIR_COUNT) break; dir_location[dir_count] = atoi(argv[argi + 0]); - dir_number[dir_count] = strdup(argv[argi + 1]); - dir_name[dir_count] = strdup(argv[argi + 2]); + dir_number[dir_count] = options_strdup(argv[argi + 1]); + dir_name[dir_count] = options_strdup(argv[argi + 2]); dir_count++; break; case 'A': - auth = strdup(argv[argi]); + auth = options_strdup(argv[argi]); break; default: return -EINVAL; @@ -491,6 +491,8 @@ error: if (serial) serial_close(serial); + options_free(); + return 0; } |