Codechange: [Game] Pass the length instead of '\0' terminating (and undoing that) in the middle of a C-string

pull/332/head
rubidium42 3 years ago committed by rubidium42
parent 8a918ce170
commit 29f2bd27c4

@ -134,7 +134,7 @@ ScriptEventAdminPort::~ScriptEventAdminPort()
SQInteger ScriptEventAdminPort::GetObject(HSQUIRRELVM vm) SQInteger ScriptEventAdminPort::GetObject(HSQUIRRELVM vm)
{ {
char *p = this->json; const char *p = this->json;
if (this->ReadTable(vm, p) == nullptr) { if (this->ReadTable(vm, p) == nullptr) {
sq_pushnull(vm); sq_pushnull(vm);
@ -144,9 +144,9 @@ SQInteger ScriptEventAdminPort::GetObject(HSQUIRRELVM vm)
return 1; return 1;
} }
char *ScriptEventAdminPort::ReadString(HSQUIRRELVM vm, char *p) const char *ScriptEventAdminPort::ReadString(HSQUIRRELVM vm, const char *p)
{ {
char *value = p; const char *value = p;
bool escape = false; bool escape = false;
for (;;) { for (;;) {
@ -168,14 +168,13 @@ char *ScriptEventAdminPort::ReadString(HSQUIRRELVM vm, char *p)
p++; p++;
} }
*p = '\0'; sq_pushstring(vm, value, p - value);
sq_pushstring(vm, value, -1); p++; // Step past the end-of-string marker (")
*p++ = '"';
return p; return p;
} }
char *ScriptEventAdminPort::ReadTable(HSQUIRRELVM vm, char *p) const char *ScriptEventAdminPort::ReadTable(HSQUIRRELVM vm, const char *p)
{ {
sq_newtable(vm); sq_newtable(vm);
@ -218,7 +217,7 @@ char *ScriptEventAdminPort::ReadTable(HSQUIRRELVM vm, char *p)
return p; return p;
} }
char *ScriptEventAdminPort::ReadValue(HSQUIRRELVM vm, char *p) const char *ScriptEventAdminPort::ReadValue(HSQUIRRELVM vm, const char *p)
{ {
SKIP_EMPTY(p); SKIP_EMPTY(p);
@ -257,7 +256,7 @@ char *ScriptEventAdminPort::ReadValue(HSQUIRRELVM vm, char *p)
sq_newarray(vm, 0); sq_newarray(vm, 0);
/* Empty array? */ /* Empty array? */
char *p2 = p + 1; const char *p2 = p + 1;
SKIP_EMPTY(p2); SKIP_EMPTY(p2);
if (*p2 == ']') { if (*p2 == ']') {
p = p2 + 1; p = p2 + 1;

@ -860,21 +860,21 @@ private:
* @param vm The VM used. * @param vm The VM used.
* @param p The (part of the) JSON string reading. * @param p The (part of the) JSON string reading.
*/ */
char *ReadTable(HSQUIRRELVM vm, char *p); const char *ReadTable(HSQUIRRELVM vm, const char *p);
/** /**
* Read a value from a JSON string. * Read a value from a JSON string.
* @param vm The VM used. * @param vm The VM used.
* @param p The (part of the) JSON string reading. * @param p The (part of the) JSON string reading.
*/ */
char *ReadValue(HSQUIRRELVM vm, char *p); const char *ReadValue(HSQUIRRELVM vm, const char *p);
/** /**
* Read a string from a JSON string. * Read a string from a JSON string.
* @param vm The VM used. * @param vm The VM used.
* @param p The (part of the) JSON string reading. * @param p The (part of the) JSON string reading.
*/ */
char *ReadString(HSQUIRRELVM vm, char *p); const char *ReadString(HSQUIRRELVM vm, const char *p);
}; };
/** /**

Loading…
Cancel
Save