Sorry for the super-long delay in responding: Arthur has pinged me about this one repeatedly. All the implementations of string-cursor->index simply return the argument unchanged, so (string-cursor->index #f) => #f. That is a valid result,
since domain errors like this are "is an error" territory and the implementation can do whatever it likes. But certainly the test should not *rely* on that behavior: it should be rewritten to only call string-cursor->index on legitimate cursors or indices, never on anything else.
Since I didn't write these tests (Will Clinger did, at least according to git blame), I'm not inclined to fix them; the simplest thing might be just to remove that test.