String arrays do not properly handle non-ASCII characters or escape sequences.
Constructs like: do not work properly.
I found this out while fixing Zip 2000 to handle such things in @make_menu. (Interestingly, @/ has been incorrectly documented as @\ ever since Graham's
newsletter of December 1995 first described it.) Apply this patch:
About Patches
Issue C62111
String array problem with non-ASCII characters
Submitted by: Kevin Bracey
Appeared in: Compiler 6.21 or before
Fixed in: Compiler 6.30
Problem
Array city -> "København";
Array city string "K@/obenhavn";
Solution
--- arrays.c~ Wed Apr 28 21:13:54 1999
+++ arrays.c Wed Nov 21 12:18:02 2001
@@ -356,9 +356,20 @@
}
{ assembly_operand chars;
+ int j;
chars.type = SHORT_CONSTANT_OT; chars.marker = 0;
- for (i=0; token_text[i]!=0; i++)
- { chars.value = token_text[i];
+ for (i=0,j=0; token_text[j]!=0; i++,j+=textual_form_length)
+ {
+ int32 unicode; int zscii;
+ unicode = text_to_unicode(token_text+j);
+ zscii = unicode_to_zscii(unicode);
+ if ((zscii != 5) && (zscii < 0x100)) chars.value = zscii;
+ else
+ { unicode_char_error(
+ "Character can only be used if declared in \
+advance as part of 'Zcharacter table':", unicode);
+ chars.value = '?';
+ }
array_entry(i, chars);
}
}
Last updated 17 April 2013.
This site is no longer supported; information may be out of date.
Maintained as a historical archive by the Interactive Fiction Technology Foundation.
Copyright 1993-2018 IFTF, CC-BY-SA unless otherwise noted.
This page was originally managed by Roger Firth.