[Issue 5366] New: std.json parseJSON incorrectly parses unicode entities
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Dec 23 10:05:19 PST 2010
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: nobody at puremagic.com
ReportedBy: ibuclaw at ubuntu.com
--- Comment #0 from Iain Buclaw <ibuclaw at 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: -------
More information about the Digitalmars-d-bugs
mailing list