[patch] Jungerl/iBrowse compiler error workaround

Steve <>
Sat Jun 10 05:42:51 CEST 2006


Hi,

I need to apply the following patch to the current jungerl CVS version
of iBrowse due to what appears to be a compiler error in erlang versions
prior to R11B:

----------------

diff -Nurw jungerl.orig/lib/ibrowse/src/ibrowse_http_client.erl jungerl/lib/ibrowse/src/ibrowse_http_client.erl
--- jungerl.orig/lib/ibrowse/src/ibrowse_http_client.erl        2006-06-01 08:02:06.000000000 +1000
+++ jungerl/lib/ibrowse/src/ibrowse_http_client.erl     2006-06-10 13:30:15.000000000 +1000
@@ -587,7 +587,7 @@
 chunk_request_body(Body, ChunkSize) ->
     chunk_request_body(Body, ChunkSize, []).

-chunk_request_body(Body, _ChunkSize, Acc) when Body == <<>>; Body == [] ->
+chunk_request_body(Body, _ChunkSize, Acc) when Body == []; Body == <<>> ->
     LastChunk = "0\r\n",
     lists:reverse(["\r\n", LastChunk | Acc]);
 chunk_request_body(Body, ChunkSize, Acc) when binary(Body),

----------------

The compiler problem can be reproduced with the following fragment:

        -module(test).
        
        -export([works/1, fails/1]).
        
        works(Body) when Body == []; Body == <<>> ->
            [].
        
        fails(Body) when Body == <<>>; Body == [] ->
            [].

which produces the following:

        Function fails/1 refers to undefined label 11
        ./test.erl:none: internal error in beam_dead;
        crash reason: {{case_clause,{'EXIT',{undefined_label,11}}},
                       [{compile,'-select_passes/2-anonymous-2-',2},
                        {compile,'-internal_comp/4-anonymous-1-',2},
                        {compile,fold_comp,3},
                        {compile,internal_comp,4},
                        {compile,internal,3}]}

I can reproduce this with erlang versions R10B-7 (Dapper) and R10B-9
(Debian unstable), but it doesn't occur with a manual build of R11B.

Cheers,
Steve





More information about the erlang-questions mailing list