http://d.puremagic.com/issues/show_bug.cgi?id=5366
Summary: std.json parseJSON incorrectly parses unicode entities
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: Phobos
AssignedTo: nob...@puremagic.com
ReportedBy: ibuc...@ubuntu.com
--- Comment #0 from Iain Buclaw ibuc...@ubuntu.com 2010-12-23 10:03:20 PST ---
import std.json;
import std.stdio;
void main()
{
auto res = parseJSON(`\u00F6`);
writefln(%s,res.str); // this should write �
}
Patch:
--- d~/phobos/std/json.d
+++ d/phobos/std/json.d
@@ -156,7 +156,7 @@
foreach_reverse(i; 0 .. 4) {
auto hex = toupper(getChar());
if(!isxdigit(hex)) error(Expecting
hex character);
-val += (isdigit(hex) ? hex - '0' : hex
- 'A') (4 * i);
+val += (isdigit(hex) ? hex - '0' : hex
- '7') (4 * i);
}
char[4] buf = void;
str.put(toUTF8(buf, val));
Or (somewhat easier to under):
--- d~/phobos2/std/json.d
+++ d/phobos2/std/json.d
@@ -156,7 +156,7 @@
foreach_reverse(i; 0 .. 4) {
auto hex = toupper(getChar());
if(!isxdigit(hex)) error(Expecting
hex character);
-val += (isdigit(hex) ? hex - '0' : hex
- 'A') (4 * i);
+val += (isdigit(hex) ? hex - '0' : hex
- 'A' + 10) (4 * i);
}
char[4] buf = void;
str.put(toUTF8(buf, val));
Regards
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---