HaikuDepot: Escape strings in the JSON builder
Fixes uploading comments which use any char that needs to be escaped. Such as line-breaks, " or \.
This commit is contained in:
@@ -91,8 +91,7 @@ public:
|
|||||||
fString << ",\"";
|
fString << ",\"";
|
||||||
else
|
else
|
||||||
fString << '"';
|
fString << '"';
|
||||||
// TODO: Escape item
|
fString << _EscapeString(item);
|
||||||
fString << item;
|
|
||||||
fString << '"';
|
fString << '"';
|
||||||
}
|
}
|
||||||
fInList = true;
|
fInList = true;
|
||||||
@@ -112,8 +111,7 @@ public:
|
|||||||
fString << "null";
|
fString << "null";
|
||||||
} else {
|
} else {
|
||||||
fString << '"';
|
fString << '"';
|
||||||
// TODO: Escape value
|
fString << _EscapeString(value);
|
||||||
fString << value;
|
|
||||||
fString << '"';
|
fString << '"';
|
||||||
}
|
}
|
||||||
fInList = true;
|
fInList = true;
|
||||||
@@ -152,11 +150,24 @@ private:
|
|||||||
fString << ",\"";
|
fString << ",\"";
|
||||||
else
|
else
|
||||||
fString << '"';
|
fString << '"';
|
||||||
// TODO: Escape name
|
fString << _EscapeString(name);
|
||||||
fString << name;
|
|
||||||
fString << "\":";
|
fString << "\":";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BString _EscapeString(const char* original) const
|
||||||
|
{
|
||||||
|
BString string(original);
|
||||||
|
string.ReplaceAll("\\", "\\\\");
|
||||||
|
string.ReplaceAll("\"", "\\\"");
|
||||||
|
string.ReplaceAll("/", "\\/");
|
||||||
|
string.ReplaceAll("\b", "\\b");
|
||||||
|
string.ReplaceAll("\f", "\\f");
|
||||||
|
string.ReplaceAll("\n", "\\n");
|
||||||
|
string.ReplaceAll("\r", "\\r");
|
||||||
|
string.ReplaceAll("\t", "\\t");
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BString fString;
|
BString fString;
|
||||||
bool fInList;
|
bool fInList;
|
||||||
|
|||||||
Reference in New Issue
Block a user