Save/load only the real preferences not the whole struct ReqToolsPrefs

This is what reqtools.library is actually reading and expecting. Looking
at code history the bug was introduced when porting ReqTools prefs to
be MUI-based.
This commit is contained in:
deadwood 2022-06-26 08:54:40 +02:00
parent 5b9752ace8
commit eec138b0cd
1 changed files with 11 additions and 20 deletions

View File

@ -53,28 +53,23 @@ static BOOL Prefs_Load(STRPTR from)
BOOL Prefs_ImportFH(BPTR fh)
{
#if (AROS_BIG_ENDIAN)
#define loadprefs reqtoolsprefs
#else
struct ReqToolsPrefs loadprefs;
int i;
#endif
BOOL retval = FALSE;
if (Read(fh, &loadprefs, sizeof(loadprefs)) == sizeof(loadprefs))
/* Load only real prefs structure */
if (Read(fh, &loadprefs.Flags, RTPREFS_SIZE) == RTPREFS_SIZE)
{
#if (!(AROS_BIG_ENDIAN))
reqtoolsprefs.Flags = AROS_BE2LONG(loadprefs.Flags);
for(i = 0;i < RTPREF_NR_OF_REQ; i++)
{
reqtoolsprefs.ReqDefaults[i].Size = AROS_BE2LONG(loadprefs.ReqDefaults[i].Size);
reqtoolsprefs.ReqDefaults[i].ReqPos = AROS_BE2LONG(loadprefs.ReqDefaults[i].ReqPos);
reqtoolsprefs.ReqDefaults[i].Size = AROS_BE2LONG(loadprefs.ReqDefaults[i].Size);
reqtoolsprefs.ReqDefaults[i].ReqPos = AROS_BE2LONG(loadprefs.ReqDefaults[i].ReqPos);
reqtoolsprefs.ReqDefaults[i].LeftOffset = AROS_BE2WORD(loadprefs.ReqDefaults[i].LeftOffset);
reqtoolsprefs.ReqDefaults[i].TopOffset = AROS_BE2WORD(loadprefs.ReqDefaults[i].TopOffset);
reqtoolsprefs.ReqDefaults[i].TopOffset = AROS_BE2WORD(loadprefs.ReqDefaults[i].TopOffset);
reqtoolsprefs.ReqDefaults[i].MinEntries = AROS_BE2WORD(loadprefs.ReqDefaults[i].MinEntries);
reqtoolsprefs.ReqDefaults[i].MaxEntries = AROS_BE2WORD(loadprefs.ReqDefaults[i].MaxEntries);
}
#endif
retval = TRUE;
}
@ -85,29 +80,25 @@ BOOL Prefs_ImportFH(BPTR fh)
BOOL Prefs_ExportFH(BPTR fh)
{
#if (AROS_BIG_ENDIAN)
#define saveprefs reqtoolsprefs
#else
struct ReqToolsPrefs saveprefs;
int i;
#endif
BOOL retval = FALSE;
D(bug("SavePrefsFH: fh: %lx\n", fh));
#if (!(AROS_BIG_ENDIAN))
saveprefs.Flags = AROS_LONG2BE(reqtoolsprefs.Flags);
for(i = 0; i < RTPREF_NR_OF_REQ; i++)
{
saveprefs.ReqDefaults[i].Size = AROS_LONG2BE(reqtoolsprefs.ReqDefaults[i].Size);
saveprefs.ReqDefaults[i].ReqPos = AROS_LONG2BE(reqtoolsprefs.ReqDefaults[i].ReqPos);
saveprefs.ReqDefaults[i].Size = AROS_LONG2BE(reqtoolsprefs.ReqDefaults[i].Size);
saveprefs.ReqDefaults[i].ReqPos = AROS_LONG2BE(reqtoolsprefs.ReqDefaults[i].ReqPos);
saveprefs.ReqDefaults[i].LeftOffset = AROS_WORD2BE(reqtoolsprefs.ReqDefaults[i].LeftOffset);
saveprefs.ReqDefaults[i].TopOffset = AROS_WORD2BE(reqtoolsprefs.ReqDefaults[i].TopOffset);
saveprefs.ReqDefaults[i].TopOffset = AROS_WORD2BE(reqtoolsprefs.ReqDefaults[i].TopOffset);
saveprefs.ReqDefaults[i].MinEntries = AROS_WORD2BE(reqtoolsprefs.ReqDefaults[i].MinEntries);
saveprefs.ReqDefaults[i].MaxEntries = AROS_WORD2BE(reqtoolsprefs.ReqDefaults[i].MaxEntries);
}
#endif
if (Write(fh, &saveprefs, sizeof(saveprefs)) == sizeof(saveprefs))
/* Save only real prefs structure */
if (Write(fh, &saveprefs.Flags, RTPREFS_SIZE) == RTPREFS_SIZE)
{
retval = TRUE;
}