On 2015/4/8 20:13, Massimiliano Ghilardi wrote: […]
Only I am surprised that LispObjects can be null: is it allowed, and when can it happen?
As far as I can determine, LispObject references should never be null when being passed as an argument to a Java function, but the code base is inconsistent (buggy) on this point.
Max
In attachment a patch that should fix issue 388.
Before accepting it, please check whether ABCL is really supposed to pass null LispObjects to the Java implementation of primitive types: the NullPointerException was due to a call to Fixnum.equalp(LispObject obj) with obj == null
Regards,
Max
Your patch has been applied as [r14757][].
As for your question on "whether ABCL is really supposed to pass null LispObject references to the Java implementation of primitive types", I think the answer is negative, as a Java primitive type by definition cannot hold a null reference. This disjunction from java.lang.Object is what "makes" it a primitive type. Our codebase is riddled with the assumption that accessing a LispObject won't return a null, as in the location your [test case failed][1]:
if (!value.equalp(ht.get(key))) { return false; }
Here, ht.get() should not return a null reference to be chained into the value.equalp() call no matter what the value of 'key' turns out to be. In lieu of something like a comprehensive audit, we are unfortunately left fixing these problems on a case by case basis.
But perhaps I have misunderstood your question somewhat: is there something more specific you were referring to?
[r14757]: http://abcl.org/trac/changeset/14757 [1]: http://abcl.org/trac/browser/trunk/abcl/src/org/armedbear/lisp/HashTable.jav...