Browse Source

Some fixes

ceriel 27 years ago
parent
commit
b4bda72e7f
2 changed files with 10 additions and 2 deletions
  1. 9 1
      lang/m2/comp/LLlex.c
  2. 1 1
      lang/m2/comp/code.c

+ 9 - 1
lang/m2/comp/LLlex.c

@@ -528,7 +528,15 @@ lexwarning(W_ORDINARY, "character constant out of range");
 					CheckForLet();
 					return tk->tk_symb = INTEGER;
 				}
-				if (ch == 'D' && base == 10) {
+				if (options['l']) {
+					if (base != 10) {
+						LoadChar(ch);
+						if (ch != 'D') {
+							PushBack();
+						}
+					}
+				}
+				if (ch == 'D' && (options['l'] || base == 10)) {
 				    if (options['l']) {
 					/* Local extension: LONGCARD exists,
 					   so internally also longintorcard_type

+ 1 - 1
lang/m2/comp/code.c

@@ -60,7 +60,7 @@ CodeString(nd)
 {
 	if (nd->nd_type->tp_fund != T_STRING) {
 		/* Character constant */
-		C_loc(nd->nd_INT);
+		CodeConst(nd->nd_INT, nd->nd_type->tp_size);
 		return;
 	}
 	C_df_dlb(++data_label);