Changeset 472 for cpp


Ignore:
Timestamp:
02/14/16 03:41:36 (9 years ago)
Author:
Maciej Komosinski
Message:

Deserialization more tolerant to whitespaces (similarly to the json standard)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/util/extvalue.cpp

    r465 r472  
    252252                        tlsGetRef(ExtObject_serialization).remove(*this);//JSON only tracks recursion, does not track reuse
    253253                        break;
    254                 case NativeSerialization:; //nop (avoid warning)
     254                case NativeSerialization:; //nop (just to avoid compiler warning)
    255255                }
    256256
     
    10101010const char* ExtValue::deserialize_inner(const char* in)
    10111011{
     1012        while(isspace(*in)) in++;
    10121013        const char* ret = parseNumber(in);
    10131014        if (ret)
     
    10361037                while (*p)
    10371038                {
     1039                        if (isspace(*p)) p++;
    10381040                        if (*p == ']') { p++; break; }
    10391041                        ret = tmp.deserialize(p);
     
    10671069                while (*p)
    10681070                {
     1071                        if (isspace(*p)) p++;
    10691072                        if (*p == '}') { p++; break; }
    10701073                        ret = args[1].deserialize(p);
     
    10921095                return in + 4;
    10931096        }
     1097        else if (!strncmp(in, "true", 4))
     1098        {
     1099                setInt(1);
     1100                return in + 4;
     1101        }
     1102        else if (!strncmp(in, "false", 5))
     1103        {
     1104                setInt(0);
     1105                return in + 5;
     1106        }
    10941107        else if (!strncmp(in, "invalid", 9))
    10951108        {
     
    11791192        tlsGetRef(ExtObject_serialization).begin();
    11801193        const char* ret = deserialize_inner(in);
     1194        if (ret) while(isspace(*ret)) ret++;
    11811195        tlsGetRef(ExtObject_serialization).end();
    11821196        return ret;
Note: See TracChangeset for help on using the changeset viewer.