diff options
-rw-r--r-- | lib.c | 6 | ||||
-rw-r--r-- | match.c | 2 | ||||
-rw-r--r-- | txr.1 | 10 |
3 files changed, 15 insertions, 3 deletions
@@ -3660,11 +3660,13 @@ const wchar_t *c_str(val obj) return litptr(obj); case STR: return obj->st.str; - case SYM: - return c_str(symbol_name(obj)); case LSTR: lazy_str_force(obj); return c_str(obj->ls.prefix); + case SYM: + if (opt_compat && opt_compat <= 231) + return c_str(symbol_name(obj)); + /* fallthrough */ default: type_mismatch(lit("~s is not a string"), obj, nao); } @@ -170,7 +170,7 @@ static void dump_var(val var, char *pfx1, size_t len1, pprint(value, ss); str = get_string_from_stream(ss); - put_string(var, std_output); + put_string(symbol_name(var), std_output); dump_byte_string(pfx1); dump_byte_string(pfx2); put_char(chr('='), std_output); @@ -72394,6 +72394,16 @@ and respectively. If 227 or lower compatibility is selected, these functions become available under their old names in addition to their new names. +.IP 231 +Versions of \*(TX until 231 contained an undocumented feature: some +library functions which are documented as having parameters that must be of +string type were allowing the arguments to be symbols. For such symbolic +arguments, the name of the symbol obtained from +.code symbol-name +was implicitly taken as the required string value. This behavior was removed: +passing symbolic arguments to library function parameters documented as +strings will cause an exception to the thrown. If a compatibility value +of 231 or lower is specified, however, the tolerant behavior is restored. .IP 225 After \*(TX 225, the behavior of the .code do |