diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2017-11-25 09:22:19 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-11-25 07:41:09 -0800 |
commit | 4fb01dd766c824529dad4bd1ca64a981e137d476 (patch) | |
tree | fe6b8e0fcea6045c048fdf8d6449af7f1acf8a4e /core/subsurfacestartup.h | |
parent | cc5a56b2751de2387572eec25fde75db7b89fb6a (diff) | |
download | subsurface-4fb01dd766c824529dad4bd1ca64a981e137d476.tar.gz |
Fix ownership issues in preferences code
Each preferences object owns its string members. In three cases, pointers
were copied instead of strings, leading to (in the best case) dangling
pointers if the user edited values:
1) In the GET_TXT macro in core/prefs-macros.h
2) In the PreferencesDialog::defaultsRequested() method
3) In main() of the mobile version
This patch fixes these issues, by using copy_string() or copy_prefs()
as appropriate.
The only reason that the old code didn't crash regularly is that the
default_prefs object was only used at startup and defaultsRequested()
is (at the moment?) dead code.
This patch also aligns the backslashes in core/pref.h and fixes a typo.
The declaration of copy_prefs() is moved to the core/prefs.h header.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core/subsurfacestartup.h')
-rw-r--r-- | core/subsurfacestartup.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/core/subsurfacestartup.h b/core/subsurfacestartup.h index b26c99025..40de09723 100644 --- a/core/subsurfacestartup.h +++ b/core/subsurfacestartup.h @@ -17,7 +17,6 @@ extern bool imported; void setup_system_prefs(void); void parse_argument(const char *arg); void free_prefs(void); -void copy_prefs(struct preferences *src, struct preferences *dest); void print_files(void); void print_version(void); |