Comment #0 by bus_dbugzilla — 2013-02-19T18:21:57Z
A known source length, when it exists, should certainly still be used to:
A. Optimize the output buffer's allocation (when an output range or buffer isn't already provided).
B. Verify sufficient output length in the case of a user-provided output array.
Both of which std.base64 already does.
However, a known source length shouldn't be *required*, because the algorithm itself doesn't require it. When the source length doesn't exist, decode can (and should) simply continue until source.empty is true.
Additionally, if the source length isn't known, and the user didn't provide an output range/buffer, then std.array.Appender should be used instead of a pre-allocated array.
I may put together a pull request for this if I get a chance.
Comment #1 by monarchdodra — 2013-07-05T06:54:07Z
+1.
I had to deactivate a wrong-usage unittest in base64. It was trying to test "input range", using map, which erroneously forwarded string length.
I fixed *that*, and the test blew up. So I deactivated it.
https://github.com/D-Programming-Language/phobos/pull/1389
Comment #2 by robert.schadek — 2024-12-01T16:16:33Z