to, 2010-01-07 kello 17:21 -0800, Christopher Barker kirjoitti: [clip] > if I have NumPyOS_ascii_ftolf right, it should return 0 if it doesn't > succesfully read a number. However, this looks like it sets the data in > *ip, even if the return value is zero.
It may also return EOF (== -1) when encountering end-of-stream. Of course, I don't think any code should not rely on EOF being -1, and I doubt that relying on it is intended here. > It does pass on that return value, but, from ctors.c: > > fromfile_next_element(FILE **fp, void *dptr, PyArray_Descr *dtype, > void *NPY_UNUSED(stream_data)) > { > /* the NULL argument is for backwards-compatibility */ > return dtype->f->scanfunc(*fp, dptr, NULL, dtype); > } > > just moves it on through. This is called from here: > > if (next(&stream, dptr, dtype, stream_data) < 0) { > break; > } > > which is checking for < 0 , so if a zero is returned, it will just go in > its merry way... Yeah, this is of course wrong; for example a file containing "1,2," results to np.fromfile("filename.txt", sep=",") == [1, 2, -1] where the last value is effectively undefined. Another point to note is that `next` may also be the fromstr_next_element function; when fixing things also its semantics should be corrected. Pauli _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion