]> granicus.if.org Git - ejabberd/commitdiff
* src/expat_erl.c: Use binaries for CDATA
authorAlexey Shchepin <alexey@process-one.net>
Wed, 5 Apr 2006 23:56:16 +0000 (23:56 +0000)
committerAlexey Shchepin <alexey@process-one.net>
Wed, 5 Apr 2006 23:56:16 +0000 (23:56 +0000)
* src/xml.erl: Likewise

SVN Revision: 526

ChangeLog
src/expat_erl.c
src/xml.erl

index 726fde688b878ee7b59bc7712e2e8829caa25816..a788dca0b3c1965ca01b4e7dc84f79653366d24c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-04-06  Alexey Shchepin  <alexey@sevcom.net>
+
+       * src/expat_erl.c: Use binaries for CDATA
+       * src/xml.erl: Likewise
+
 2006-04-02  Alexey Shchepin  <alexey@sevcom.net>
 
        * src/msgs/ru.msg: Updated (thanks to Sergei Golovan)
index 1b197dace5e127401702c8f2fc795d10238bbdb3..e4c3fd10b6f9968cc9adc209e185b722501a11d8 100644 (file)
@@ -164,7 +164,7 @@ void *erlXML_CharacterDataHandler(expat_data *d,
    ei_x_encode_list_header(&event_buf, 1);
    ei_x_encode_tuple_header(&event_buf, 2);
    ei_x_encode_long(&event_buf, XML_CDATA);
-   ei_x_encode_string_len_fixed(&event_buf, s, len);
+   ei_x_encode_binary(&event_buf, s, len);
    return NULL;
 }
 
index 222e49b3ecddd7fb11dedc778b64f9ca681244b9..8886188671e40f4987827fd7e413326dc15918b4 100644 (file)
@@ -105,7 +105,7 @@ attr_to_list({Name, Value}) ->
 %crypt([], R) ->
 %    R.
 
-crypt(S) ->
+crypt(S) when is_list(S) ->
     [case C of
         $& -> "&amp;";
         $< -> "&lt;";
@@ -113,7 +113,9 @@ crypt(S) ->
         $" -> "&quot;";
         $' -> "&apos;";
         _ -> C
-     end || C <- S].
+     end || C <- S];
+crypt(S) when is_binary(S) ->
+    crypt(binary_to_list(S)).
 
 %crypt1(S) ->
 %    lists:flatten([case C of
@@ -159,10 +161,10 @@ remove_cdata(L) -> [E || E <- L, remove_cdata_p(E)].
 %    R.
 
 get_cdata(L) ->
-    get_cdata(L, "").
+    binary_to_list(list_to_binary(get_cdata(L, ""))).
 
 get_cdata([{xmlcdata, CData} | L], S) ->
-    get_cdata(L, S ++ CData);
+    get_cdata(L, [S, CData]);
 get_cdata([_ | L], S) ->
     get_cdata(L, S);
 get_cdata([], S) ->