From 64dd9e00ec4aebc63fbddaf9dcc54b04fc9d5859 Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Wed, 21 Dec 2022 17:19:36 -0600 Subject: [PATCH] Fixes for bugs #211-213, submitted by Bastian Schick. :-) --- fltpoint.c | 2 +- parmode.h | 4 ++-- rmac.c | 4 +++- version.h | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/fltpoint.c b/fltpoint.c index 7e516fb..ffde55e 100644 --- a/fltpoint.c +++ b/fltpoint.c @@ -210,7 +210,7 @@ uint64_t DoubleToFixedPoint(double d, int intBits, int fracBits) // Invert the result, if necessary if (signBit == 1) - result = (result = 0xFFFFFFFFFFFFFFFFLL) + 1; + result = (result ^ 0xFFFFFFFFFFFFFFFFLL) + 1; return result; } diff --git a/parmode.h b/parmode.h index fe01261..27863d0 100644 --- a/parmode.h +++ b/parmode.h @@ -934,7 +934,7 @@ IS_SUPPRESSEDn: // Something really bad happened, abort return error("reached end of line while parsing expression"); } - if (*look_ahead == '(') + if (*look_ahead == '(') { if (parenthesis_level == 0) { @@ -1221,7 +1221,7 @@ CHK_FOR_DISPn: { // When PC relative is enforced, check for any symbols that aren't // EQU'd, in this case it's an illegal mode - if ((CHECK_OPTS(OPT_PC_RELATIVE)) && (AnEXATTR & (DEFINED | REFERENCED | EQUATED) == (DEFINED | REFERENCED))) + if ((CHECK_OPTS(OPT_PC_RELATIVE)) && ((AnEXATTR & (DEFINED | REFERENCED | EQUATED)) == (DEFINED | REFERENCED))) return error("relocation not allowed when o30 is enabled"); tok++; diff --git a/rmac.c b/rmac.c index 8e5f410..17715f7 100644 --- a/rmac.c +++ b/rmac.c @@ -758,7 +758,9 @@ int Process(int argc, char ** argv) if (firstfname == NULL) firstfname = defname; - strcpy(fnbuf, firstfname); + // It's the size of fnbuf minus 5 because of the possible 4 char suffix + // + trailing null (added by fext()). + strncpy(fnbuf, firstfname, sizeof(fnbuf) - 5); fext(fnbuf, (prg_flag ? ".prg" : ".o"), 1); objfname = fnbuf; } diff --git a/version.h b/version.h index 5e60ffa..97c3ff0 100644 --- a/version.h +++ b/version.h @@ -15,6 +15,6 @@ #define MAJOR 2 // Major version number #define MINOR 2 // Minor version number -#define PATCH 13 // Patch release number +#define PATCH 14 // Patch release number #endif // __VERSION_H__ -- 2.37.2