I6 handling of Latin-1 multiplication sign?

The DM4 says that by default source text can include any Latin-1 character. I’m compiling to Glulx, so I expected all such characters to be preserved, but it looks like the multiplication sign is being mapped to the letter ‘x’ by the compiler: the following prints ‘1’.

[ floob ; print '×' == 'x'; ]; Am I misunderstanding something?

Working here.

[ Func;
    print "Character code is ", '×', ".^";
    print '×' == 'x'; new_line;

Oh, my source file was UTF-8 encoded. That’s why it got 1404 instead of 215. If I either change the file encoding to Latin-1, or compile with the -cU flag, I get 215, which is the correct output.

The second line is 0 either way, though.

If you don’t want to be subject to the vagaries of your I6 source code encoding, use the ASCII escape:

	print "Character code is ", '@{D7}', ".^";
	print '@{D7}' == 'x'; new_line;

Okay, thanks. It turns out it was ni that was doing the ‘×’ to ‘x’ conversion (the code I was using was inside an I6 inclusion). Since the documentation never addresses what characters are legal in I6 inclusions, I guess this doesn’t qualify as a bug.

It probably should though. I’d consider that omission a bug in and of itself, since it can lead to unexpected results like this.

Okay, submitted: http://inform7.com/mantis/view.php?id=1758.