From 96a4a03f1d581810833d26aa9e7ff864ca8255f1 Mon Sep 17 00:00:00 2001
From: Lars Thorsen <lars@erlang.org>
Date: Fri, 8 Jul 2011 10:56:10 +0200
Subject: Entity replacement in attributes doesn't work poperly.

---
 lib/xmerl/src/xmerl_scan.erl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'lib/xmerl')

diff --git a/lib/xmerl/src/xmerl_scan.erl b/lib/xmerl/src/xmerl_scan.erl
index 059c8f21b6..e598c5f56d 100644
--- a/lib/xmerl/src/xmerl_scan.erl
+++ b/lib/xmerl/src/xmerl_scan.erl
@@ -2276,7 +2276,7 @@ scan_att_chars([H|T], S0, H, Acc, TmpAcc,AttType,IsNorm) -> % End quote
 	    true -> 
 		normalize(Acc,S,IsNorm)
 	end,
-    {lists:reverse(Acc2), T, S2,IsNorm2};
+    {lists:flatten(lists:reverse(Acc2)), T, S2,IsNorm2};
 scan_att_chars("&" ++ T, S0, Delim, Acc, TmpAcc,AT,IsNorm) -> % Reference
     ?bump_col(1),
     {ExpRef, T1, S1} = scan_reference(T, S),
-- 
cgit v1.2.3


From 5650ad3d33513dac84af045788628e06c1645aa4 Mon Sep 17 00:00:00 2001
From: Lars Thorsen <lars@erlang.org>
Date: Tue, 9 Aug 2011 14:33:02 +0200
Subject: Added test case for ticket 9411.

---
 lib/xmerl/test/xmerl_SUITE.erl              |  13 ++++++++++++-
 lib/xmerl/test/xmerl_SUITE_data/misc.tar.gz | Bin 47121 -> 47340 bytes
 2 files changed, 12 insertions(+), 1 deletion(-)

(limited to 'lib/xmerl')

diff --git a/lib/xmerl/test/xmerl_SUITE.erl b/lib/xmerl/test/xmerl_SUITE.erl
index 392b2522e8..0c809dbcb6 100644
--- a/lib/xmerl/test/xmerl_SUITE.erl
+++ b/lib/xmerl/test/xmerl_SUITE.erl
@@ -57,7 +57,8 @@ groups() ->
      {eventp_tests, [], [sax_parse_and_export]},
      {ticket_tests, [],
       [ticket_5998, ticket_7211, ticket_7214, ticket_7430,
-       ticket_6873, ticket_7496, ticket_8156, ticket_8697]},
+       ticket_6873, ticket_7496, ticket_8156, ticket_8697,
+       ticket_9411]},
      {app_test, [], [{xmerl_app_test, all}]},
      {appup_test, [], [{xmerl_appup_test, all}]}].
 
@@ -575,7 +576,17 @@ ticket_8697(Config) ->
     ?line [16#545C] = HexEntityText,
     ok.
 
+ticket_9411(suite) -> [];
+ticket_9411(doc) -> 
+    ["Test that xmerl_scan handles attribute that contains for example &quot"];
+ticket_9411(Config) ->
+    DataDir = ?config(data_dir,Config),
 
+    ?line {ok, Schema} = xmerl_xsd:process_schema(filename:join([DataDir,"misc/ticket_9411.xsd"])),
+    ?line {ok, Bin} = file:read_file(filename:join([DataDir,"misc/ticket_9411.xml"])),
+    ?line Xml = erlang:binary_to_list(Bin),
+    ?line {E, _} = xmerl_scan:string(Xml),
+    ?line {E, _} = xmerl_xsd:validate(E, Schema).
 
 
 
diff --git a/lib/xmerl/test/xmerl_SUITE_data/misc.tar.gz b/lib/xmerl/test/xmerl_SUITE_data/misc.tar.gz
index c48a6f897b..fef7431845 100644
Binary files a/lib/xmerl/test/xmerl_SUITE_data/misc.tar.gz and b/lib/xmerl/test/xmerl_SUITE_data/misc.tar.gz differ
-- 
cgit v1.2.3