--- p/typecheck.c.orig Sat Jul 30 00:56:47 2005 +++ p/typecheck.c Mon Nov 14 06:05:32 2005 @@ -770,7 +770,7 @@ val = probably_call_function (val); if (var_parm && PASCAL_TYPE_DISCRIMINATED_STRING (partype) - && PASCAL_TYPE_DISCRIMINATED_STRING (TREE_TYPE (val))) + && PASCAL_TYPE_STRING (TREE_TYPE (val))) { type = build_reference_type (TREE_TYPE (val)); cond = build_pascal_binary_op (NE_EXPR, @@ -785,7 +785,7 @@ cond = build_pascal_binary_op (NE_EXPR, TYPE_LANG_DECLARED_CAPACITY (TREE_TYPE (last_schema)), TYPE_LANG_DECLARED_CAPACITY (TREE_TYPE (val))); - else + else if (!PASCAL_TYPE_DISCRIMINATED_STRING (partype)) cond = build_pascal_binary_op (NE_EXPR, PASCAL_STRING_LENGTH (last_schema), PASCAL_STRING_LENGTH (val));