Trailing whitespace (after "=") is stripped, but the return value from
base64:strip_spaces is not in the same format expected by
base64:decode.
example of the problem:
------------------------------
----------------------------------------
3> base64:decode("cXV1eA==").
<<"quux">>
4> base64:decode("cXV1eA==\n").
** exception error: no function clause matching base64:decode([61,"=Ae1VXc"],
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,...},
[])
in function base64:decode/1
----------------------------------------------------------------------
more specifically to the internal api:
----------------------------------------------------------------------
7> base64:strip_spaces("foo==\n", []).
[61,"=oof"]
8> base64:strip_spaces("foo==", []).
"==oof"
----------------------------------------------------------------------
patch attached.
--
Christopher Stelma
chris@...
[base64fix.diff]
--- otp_src_R13B/lib/stdlib/src/base64.erl 2009-03-12 08:21:37.000000000 -0400
+++ otp_src_R13B-base64fix/lib/stdlib/src/base64.erl 2009-04-17 12:46:12.000000000 -0400
@@ -189,7 +189,7 @@
%%%========================================================================
strip_spaces([], A) -> A;
-strip_spaces([$=,C|_], A) when C =/= $= -> [$=, A];
+strip_spaces([$=,C|_], A) when C =/= $= -> [$= | A];
strip_spaces([$\s|Cs], A) -> strip_spaces(Cs, A);
strip_spaces([$\t|Cs], A) -> strip_spaces(Cs, A);
strip_spaces([$\r|Cs], A) -> strip_spaces(Cs, A);
_______________________________________________
erlang-patches mailing list
erlang-patches@...
http://www.erlang.org/mailman/listinfo/erlang-patches