diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | eval.c | 8 |
2 files changed, 10 insertions, 4 deletions
@@ -1,5 +1,11 @@ 2012-01-27 Kaz Kylheku <kaz@kylheku.com> + * eval.c (dwim_loc, op_dwim): Relax the requirement on hash + indexing arguments. The default value can be omitted, + defaulting to nil. + +2012-01-27 Kaz Kylheku <kaz@kylheku.com> + * hash.c (hash_begin): Missing type check added, otherwise passing in an object that is not a hash results in corruption or crashing behavior. @@ -737,8 +737,8 @@ static val *dwim_loc(val form, val env, val op, val newval, val *retval) { if (hashp(obj)) { val new_p, *loc; - if (length(args) != two) - eval_error(form, lit("[~s ...]: hash indexing needs two args"), + if (lt(length(args),two)) + eval_error(form, lit("[~s ...]: hash indexing needs at least one arg"), obj, nao); loc = gethash_l(obj, first(args), &new_p); if (new_p) @@ -1002,8 +1002,8 @@ static val op_dwim(val form, val env) case COBJ: { if (hashp(obj)) { - if (length(args) != two) - eval_error(form, lit("[~s ...]: hash indexing needs two args"), + if (lt(length(args), two)) + eval_error(form, lit("[~s ...]: hash indexing needs at least one arg"), obj, nao); return gethash_n(obj, first(args), second(args)); } |