diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | lib.c | 4 | ||||
-rw-r--r-- | txr.1 | 12 |
3 files changed, 27 insertions, 0 deletions
@@ -1,5 +1,16 @@ 2015-01-11 Kaz Kylheku <kaz@kylheku.com> + * lib.c (make_like): Bugfix. (make-like nil "abc") + must return the empty string, not nil. Only + lists of non-characters fail to convert to a string. + Since programs may depend on the hitherto wrong, + undocumented behavior, this is made subject to + compatibility. + + * txr.1: Added compatibility note. + +2015-01-11 Kaz Kylheku <kaz@kylheku.com> + * eval.c (merge_wrap): Make generic over sequences. * txr.1: Update documentation for merge function. @@ -504,6 +504,10 @@ val make_like(val list, val thatobj) case STR: case LIT: case LSTR: + if (!opt_compat || opt_compat > 101) { + if (!cdr(list)) + return null_string; + } if (is_chr(car(list))) return cat_str(list, nil); break; @@ -26443,6 +26443,18 @@ can be emulated is \*(TX 97. Here are values which have a special meaning as arguments to the .code -C option, along with a description of what behaviors are affected: +.IP 101 +Up to \*(TX 101, the +.code make-like +function incorrectly returned +.code nil +when converting the empty list +.code nil +to string type. This affects numerous generic sequence functions, +causing their result to be +.code nil +instead of an empty string. + .IP 100 Up to \*(TX 100, the .code split-str |