Skip to content

Commit

Permalink
Fix invalid use of pointer to temporary object in json2lua conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
sapier authored and sapier committed Nov 4, 2013
1 parent 7be1865 commit 1a96987
Showing 1 changed file with 31 additions and 27 deletions.
58 changes: 31 additions & 27 deletions src/convert_json.cpp
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}
}
Expand Down Expand Up @@ -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;
}
}
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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;
}
}
Expand All @@ -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;
}
}
Expand All @@ -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;
}
}
Expand All @@ -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;
}
}
Expand Down Expand Up @@ -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;
}
}
Expand Down

0 comments on commit 1a96987

Please sign in to comment.