Dup with 'repeat * size' not just 'repeat' for constants
authorRobert Pengelly <robertapengelly@hotmail.com>
Fri, 14 Jun 2024 08:37:41 +0000 (09:37 +0100)
committerRobert Pengelly <robertapengelly@hotmail.com>
Fri, 14 Jun 2024 08:37:41 +0000 (09:37 +0100)
kwd.c
process.c

diff --git a/kwd.c b/kwd.c
index 73f120971085029c34c388b4d26e611c007b5f1c..01a2df41a4e70331f7f2097a5c8b264f1635e08f 100644 (file)
--- a/kwd.c
+++ b/kwd.c
@@ -266,7 +266,7 @@ static void handle_constant (char *start, char **pp, int size) {
                     
                     if (expr.type == EXPR_TYPE_CONSTANT) {
                     
-                        repeat = expr.add_number;
+                        repeat = expr.add_number * size;
                         
                         if (repeat == 0) {
                         
index c0a38c83c6d52ebe403bd10f508824ce066d63eb..892262847f6d0993c7b7ba79ab496875f8f4b908 100644 (file)
--- a/process.c
+++ b/process.c
@@ -338,7 +338,7 @@ static void handler_error (char *start, char **pp) {
     }
     
     temp = xmalloc (1 + strlen (type) + 1 + strlen (*pp) + 1);
-    sprintf (temp, "#%s %s", type, *pp);
+    sprintf (temp, "%%%s %s", type, *pp);
     
     report_line_at (get_filename (), get_line_number (), REPORT_ERROR, start, skip_whitespace (start + 1), "%s", temp);
     free (temp);
@@ -473,7 +473,7 @@ static void handler_warning (char *start, char **pp) {
     }
     
     temp = xmalloc (1 + strlen (type) + 1 + strlen (*pp) + 1);
-    sprintf (temp, "#%s %s", type, *pp);
+    sprintf (temp, "%%%s %s", type, *pp);
     
     report_line_at (get_filename (), get_line_number (), REPORT_WARNING, start, skip_whitespace (start + 1), "%s", temp);
     free (temp);