shithub: rgbds

Download patch

ref: 9d811e1267e725d5c4f63cb10061edaa863b3408
parent: af6f62701c5ab36fa674ef430981003f5498432a
author: ISSOtm <[email protected]>
date: Sun Feb 9 17:13:16 EST 2020

Warn when truncating values in `charmap`

--- a/src/asm/asmy.y
+++ b/src/asm/asmy.y
@@ -999,7 +999,12 @@
 
 charmap		: T_POP_CHARMAP string comma const
 		{
-			if (charmap_Add($2, constexpr_GetConstantValue(&$4) & 0xFF) == -1) {
+			int32_t value = constexpr_GetConstantValue(&$4);
+
+			if ((value & 0xFF) != value)
+				warning(WARNING_TRUNCATION, "Expression must be 8-bit");
+
+			if (charmap_Add($2, value & 0xFF) == -1) {
 				fprintf(stderr, "Error parsing charmap. Either you've added too many (%i), or the input character length is too long (%i)' : %s\n", MAXCHARMAPS, CHARMAPLENGTH, strerror(errno));
 				yyerror("Error parsing charmap.");
 			}