diff options
author | sapier <sapier at gmx dot net> | 2013-11-04 17:04:55 +0100 |
---|---|---|
committer | sapier <Sapier at GMX dot net> | 2013-11-04 19:11:11 +0100 |
commit | 1a96987d0fbbcf689825851ee282fe79e4658c02 (patch) | |
tree | c0f1c0f703dc18e3380047caf4d93d541881f982 | |
parent | 7be18657b11f6995adac92648be6e6bcb922d7ee (diff) | |
download | minetest-1a96987d0fbbcf689825851ee282fe79e4658c02.tar.gz minetest-1a96987d0fbbcf689825851ee282fe79e4658c02.tar.bz2 minetest-1a96987d0fbbcf689825851ee282fe79e4658c02.zip |
Fix invalid use of pointer to temporary object in json2lua conversion
-rw-r--r-- | src/convert_json.cpp | 58 |
1 files changed, 31 insertions, 27 deletions
diff --git a/src/convert_json.cpp b/src/convert_json.cpp index 61db67fd5..edb37024c 100644 --- a/src/convert_json.cpp +++ b/src/convert_json.cpp @@ -105,13 +105,17 @@ std::vector<ModStoreMod> readModStoreList(Json::Value& modlist) { //id if (modlist[i]["id"].asString().size()) { - const char* id_raw = modlist[i]["id"].asString().c_str(); + std::string id_raw = modlist[i]["id"].asString(); char* endptr = 0; - int numbervalue = strtol(id_raw,&endptr,10); + int numbervalue = strtol(id_raw.c_str(),&endptr,10); - if ((*id_raw != 0) && (*endptr == 0)) { + if ((id_raw != "") && (*endptr == 0)) { toadd.id = numbervalue; } + else { + errorstream << "readModStoreList: missing id" << std::endl; + toadd.valid = false; + } } else { errorstream << "readModStoreList: missing id" << std::endl; @@ -163,11 +167,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) { ModStoreVersionEntry toadd; if (details["version_set"][i]["id"].asString().size()) { - const char* id_raw = details["version_set"][i]["id"].asString().c_str(); + std::string id_raw = details["version_set"][i]["id"].asString(); char* endptr = 0; - int numbervalue = strtol(id_raw,&endptr,10); + int numbervalue = strtol(id_raw.c_str(),&endptr,10); - if ((*id_raw != 0) && (*endptr == 0)) { + if ((id_raw != "") && (*endptr == 0)) { toadd.id = numbervalue; } } @@ -215,11 +219,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) { if (details["categories"][i]["id"].asString().size()) { - const char* id_raw = details["categories"][i]["id"].asString().c_str(); + std::string id_raw = details["categories"][i]["id"].asString(); char* endptr = 0; - int numbervalue = strtol(id_raw,&endptr,10); + int numbervalue = strtol(id_raw.c_str(),&endptr,10); - if ((*id_raw != 0) && (*endptr == 0)) { + if ((id_raw != "") && (*endptr == 0)) { toadd.id = numbervalue; } } @@ -248,11 +252,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) { if (details["author"].isObject()) { if (details["author"]["id"].asString().size()) { - const char* id_raw = details["author"]["id"].asString().c_str(); + std::string id_raw = details["author"]["id"].asString(); char* endptr = 0; - int numbervalue = strtol(id_raw,&endptr,10); + int numbervalue = strtol(id_raw.c_str(),&endptr,10); - if ((*id_raw != 0) && (*endptr == 0)) { + if ((id_raw != "") && (*endptr == 0)) { retval.author.id = numbervalue; } else { @@ -282,11 +286,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) { if (details["license"].isObject()) { if (details["license"]["id"].asString().size()) { - const char* id_raw = details["license"]["id"].asString().c_str(); + std::string id_raw = details["license"]["id"].asString(); char* endptr = 0; - int numbervalue = strtol(id_raw,&endptr,10); + int numbervalue = strtol(id_raw.c_str(),&endptr,10); - if ((*id_raw != 0) && (*endptr == 0)) { + if ((id_raw != "") && (*endptr == 0)) { retval.license.id = numbervalue; } } @@ -313,11 +317,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) { if (details["titlepic"].isObject()) { if (details["titlepic"]["id"].asString().size()) { - const char* id_raw = details["titlepic"]["id"].asString().c_str(); + std::string id_raw = details["titlepic"]["id"].asString(); char* endptr = 0; - int numbervalue = strtol(id_raw,&endptr,10); + int numbervalue = strtol(id_raw.c_str(),&endptr,10); - if ((*id_raw != 0) && (*endptr == 0)) { + if ((id_raw != "") && (*endptr == 0)) { retval.titlepic.id = numbervalue; } } @@ -332,11 +336,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) { if (details["titlepic"]["mod"].asString().size()) { - const char* mod_raw = details["titlepic"]["mod"].asString().c_str(); + std::string mod_raw = details["titlepic"]["mod"].asString(); char* endptr = 0; - int numbervalue = strtol(mod_raw,&endptr,10); + int numbervalue = strtol(mod_raw.c_str(),&endptr,10); - if ((*mod_raw != 0) && (*endptr == 0)) { + if ((mod_raw != "") && (*endptr == 0)) { retval.titlepic.mod = numbervalue; } } @@ -345,11 +349,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) { //id if (details["id"].asString().size()) { - const char* id_raw = details["id"].asString().c_str(); + std::string id_raw = details["id"].asString(); char* endptr = 0; - int numbervalue = strtol(id_raw,&endptr,10); + int numbervalue = strtol(id_raw.c_str(),&endptr,10); - if ((*id_raw != 0) && (*endptr == 0)) { + if ((id_raw != "") && (*endptr == 0)) { retval.id = numbervalue; } } @@ -389,11 +393,11 @@ ModStoreModDetails readModStoreModDetails(Json::Value& details) { //value if (details["rating"].asString().size()) { - const char* id_raw = details["rating"].asString().c_str(); + std::string id_raw = details["rating"].asString(); char* endptr = 0; - float numbervalue = strtof(id_raw,&endptr); + float numbervalue = strtof(id_raw.c_str(),&endptr); - if ((*id_raw != 0) && (*endptr == 0)) { + if ((id_raw != "") && (*endptr == 0)) { retval.rating = numbervalue; } } |