From fb80e0421275403a929743cad86b71de7ffd646e Mon Sep 17 00:00:00 2001 From: Shane Loretz Date: Thu, 1 Jun 2017 14:05:03 -0700 Subject: Check sentry to remove unused variable warning --- tiny_obj_loader.h | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/tiny_obj_loader.h b/tiny_obj_loader.h index 3c80145..1006070 100644 --- a/tiny_obj_loader.h +++ b/tiny_obj_loader.h @@ -401,20 +401,22 @@ static std::istream &safeGetline(std::istream &is, std::string &t) { std::istream::sentry se(is, true); std::streambuf *sb = is.rdbuf(); - for (;;) { - int c = sb->sbumpc(); - switch (c) { - case '\n': - return is; - case '\r': - if (sb->sgetc() == '\n') sb->sbumpc(); - return is; - case EOF: - // Also handle the case when the last line has no line ending - if (t.empty()) is.setstate(std::ios::eofbit); - return is; - default: - t += static_cast(c); + if (se) { + for (;;) { + int c = sb->sbumpc(); + switch (c) { + case '\n': + return is; + case '\r': + if (sb->sgetc() == '\n') sb->sbumpc(); + return is; + case EOF: + // Also handle the case when the last line has no line ending + if (t.empty()) is.setstate(std::ios::eofbit); + return is; + default: + t += static_cast(c); + } } } } -- cgit v1.2.3 From 0f4a955e0164e14aa108539f41eba38dd54a0402 Mon Sep 17 00:00:00 2001 From: Shane Loretz Date: Thu, 1 Jun 2017 14:09:15 -0700 Subject: 4096 -> TINYOBJ_SSCANF_BUFFER_SIZE --- tiny_obj_loader.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tiny_obj_loader.h b/tiny_obj_loader.h index 1006070..07a876c 100644 --- a/tiny_obj_loader.h +++ b/tiny_obj_loader.h @@ -1676,7 +1676,7 @@ bool LoadObj(attrib_t *attrib, std::vector *shapes, if (token[0] == 't' && IS_SPACE(token[1])) { tag_t tag; - char namebuf[4096]; + char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 2; #ifdef _MSC_VER sscanf_s(token, "%s", namebuf, (unsigned)_countof(namebuf)); @@ -1704,7 +1704,7 @@ bool LoadObj(attrib_t *attrib, std::vector *shapes, tag.stringValues.resize(static_cast(ts.num_strings)); for (size_t i = 0; i < static_cast(ts.num_strings); ++i) { - char stringValueBuffer[4096]; + char stringValueBuffer[TINYOBJ_SSCANF_BUFFER_SIZE]; #ifdef _MSC_VER sscanf_s(token, "%s", stringValueBuffer, @@ -1986,7 +1986,7 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback, if (token[0] == 't' && IS_SPACE(token[1])) { tag_t tag; - char namebuf[4096]; + char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 2; #ifdef _MSC_VER sscanf_s(token, "%s", namebuf, (unsigned)_countof(namebuf)); @@ -2014,7 +2014,7 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback, tag.stringValues.resize(static_cast(ts.num_strings)); for (size_t i = 0; i < static_cast(ts.num_strings); ++i) { - char stringValueBuffer[4096]; + char stringValueBuffer[TINYOBJ_SSCANF_BUFFER_SIZE]; #ifdef _MSC_VER sscanf_s(token, "%s", stringValueBuffer, -- cgit v1.2.3 From 56fa047ba9eada1bf72cd6f716f04515d3825c11 Mon Sep 17 00:00:00 2001 From: Shane Loretz Date: Thu, 1 Jun 2017 14:14:52 -0700 Subject: Replace sscanf with snprintf --- tiny_obj_loader.h | 57 +++++++++---------------------------------------------- 1 file changed, 9 insertions(+), 48 deletions(-) diff --git a/tiny_obj_loader.h b/tiny_obj_loader.h index 07a876c..b70f30d 100644 --- a/tiny_obj_loader.h +++ b/tiny_obj_loader.h @@ -1032,11 +1032,7 @@ void LoadMtl(std::map *material_map, // set new mtl name char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 7; -#ifdef _MSC_VER - sscanf_s(token, "%s", namebuf, (unsigned)_countof(namebuf)); -#else - std::sscanf(token, "%s", namebuf); -#endif + std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); material.name = namebuf; continue; } @@ -1543,11 +1539,7 @@ bool LoadObj(attrib_t *attrib, std::vector *shapes, if ((0 == strncmp(token, "usemtl", 6)) && IS_SPACE((token[6]))) { char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 7; -#ifdef _MSC_VER - sscanf_s(token, "%s", namebuf, (unsigned)_countof(namebuf)); -#else - std::sscanf(token, "%s", namebuf); -#endif + std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); int newMaterialId = -1; if (material_map.find(namebuf) != material_map.end()) { @@ -1663,11 +1655,7 @@ bool LoadObj(attrib_t *attrib, std::vector *shapes, // @todo { multiple object name? } char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 2; -#ifdef _MSC_VER - sscanf_s(token, "%s", namebuf, (unsigned)_countof(namebuf)); -#else - std::sscanf(token, "%s", namebuf); -#endif + std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); name = std::string(namebuf); continue; @@ -1678,11 +1666,7 @@ bool LoadObj(attrib_t *attrib, std::vector *shapes, char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 2; -#ifdef _MSC_VER - sscanf_s(token, "%s", namebuf, (unsigned)_countof(namebuf)); -#else - std::sscanf(token, "%s", namebuf); -#endif + std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); tag.name = std::string(namebuf); token += tag.name.size() + 1; @@ -1706,12 +1690,7 @@ bool LoadObj(attrib_t *attrib, std::vector *shapes, for (size_t i = 0; i < static_cast(ts.num_strings); ++i) { char stringValueBuffer[TINYOBJ_SSCANF_BUFFER_SIZE]; -#ifdef _MSC_VER - sscanf_s(token, "%s", stringValueBuffer, - (unsigned)_countof(stringValueBuffer)); -#else - std::sscanf(token, "%s", stringValueBuffer); -#endif + std::snprintf(stringValueBuffer, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); tag.stringValues[i] = stringValueBuffer; token += tag.stringValues[i].size() + 1; } @@ -1853,12 +1832,7 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback, if ((0 == strncmp(token, "usemtl", 6)) && IS_SPACE((token[6]))) { char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 7; -#ifdef _MSC_VER - sscanf_s(token, "%s", namebuf, - static_cast(_countof(namebuf))); -#else - std::sscanf(token, "%s", namebuf); -#endif + std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); int newMaterialId = -1; if (material_map.find(namebuf) != material_map.end()) { @@ -1968,11 +1942,7 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback, // @todo { multiple object name? } char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 2; -#ifdef _MSC_VER - sscanf_s(token, "%s", namebuf, (unsigned)_countof(namebuf)); -#else - std::sscanf(token, "%s", namebuf); -#endif + std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); std::string object_name = std::string(namebuf); if (callback.object_cb) { @@ -1988,11 +1958,7 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback, char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 2; -#ifdef _MSC_VER - sscanf_s(token, "%s", namebuf, (unsigned)_countof(namebuf)); -#else - std::sscanf(token, "%s", namebuf); -#endif + std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); tag.name = std::string(namebuf); token += tag.name.size() + 1; @@ -2016,12 +1982,7 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback, for (size_t i = 0; i < static_cast(ts.num_strings); ++i) { char stringValueBuffer[TINYOBJ_SSCANF_BUFFER_SIZE]; -#ifdef _MSC_VER - sscanf_s(token, "%s", stringValueBuffer, - (unsigned)_countof(stringValueBuffer)); -#else - std::sscanf(token, "%s", stringValueBuffer); -#endif + std::snprintf(stringValueBuffer, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); tag.stringValues[i] = stringValueBuffer; token += tag.stringValues[i].size() + 1; } -- cgit v1.2.3 From a1324f17fd186c22bda0fa44ad8eda50dec26e87 Mon Sep 17 00:00:00 2001 From: Shane Loretz Date: Fri, 2 Jun 2017 07:28:20 -0700 Subject: Replaced snprintf with stringstream Deleted now unused TINYOBJ_SSCANF_BUFFER_SIZE --- tiny_obj_loader.h | 59 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/tiny_obj_loader.h b/tiny_obj_loader.h index b70f30d..1a506da 100644 --- a/tiny_obj_loader.h +++ b/tiny_obj_loader.h @@ -44,6 +44,7 @@ THE SOFTWARE. #define TINY_OBJ_LOADER_H_ #include +#include #include #include @@ -364,7 +365,6 @@ namespace tinyobj { MaterialReader::~MaterialReader() {} -#define TINYOBJ_SSCANF_BUFFER_SIZE (4096) struct vertex_index { int v_idx, vt_idx, vn_idx; @@ -1030,10 +1030,10 @@ void LoadMtl(std::map *material_map, has_tr = false; // set new mtl name - char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 7; - std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); - material.name = namebuf; + std::stringstream ss; + ss << token; + material.name = ss.str(); continue; } @@ -1537,9 +1537,10 @@ bool LoadObj(attrib_t *attrib, std::vector *shapes, // use mtl if ((0 == strncmp(token, "usemtl", 6)) && IS_SPACE((token[6]))) { - char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 7; - std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); + std::stringstream ss; + ss << token; + std::string namebuf = ss.str(); int newMaterialId = -1; if (material_map.find(namebuf) != material_map.end()) { @@ -1653,10 +1654,10 @@ bool LoadObj(attrib_t *attrib, std::vector *shapes, shape = shape_t(); // @todo { multiple object name? } - char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 2; - std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); - name = std::string(namebuf); + std::stringstream ss; + ss << token; + name = ss.str(); continue; } @@ -1664,10 +1665,10 @@ bool LoadObj(attrib_t *attrib, std::vector *shapes, if (token[0] == 't' && IS_SPACE(token[1])) { tag_t tag; - char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 2; - std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); - tag.name = std::string(namebuf); + std::stringstream ss; + ss << token; + tag.name = ss.str(); token += tag.name.size() + 1; @@ -1688,10 +1689,9 @@ bool LoadObj(attrib_t *attrib, std::vector *shapes, tag.stringValues.resize(static_cast(ts.num_strings)); for (size_t i = 0; i < static_cast(ts.num_strings); ++i) { - char stringValueBuffer[TINYOBJ_SSCANF_BUFFER_SIZE]; - - std::snprintf(stringValueBuffer, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); - tag.stringValues[i] = stringValueBuffer; + std::stringstream ss; + ss << token; + tag.stringValues[i] = ss.str(); token += tag.stringValues[i].size() + 1; } @@ -1830,9 +1830,10 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback, // use mtl if ((0 == strncmp(token, "usemtl", 6)) && IS_SPACE((token[6]))) { - char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 7; - std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); + std::stringstream ss; + ss << token; + std::string namebuf = ss.str(); int newMaterialId = -1; if (material_map.find(namebuf) != material_map.end()) { @@ -1846,7 +1847,7 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback, } if (callback.usemtl_cb) { - callback.usemtl_cb(user_data, namebuf, material_id); + callback.usemtl_cb(user_data, namebuf.c_str(), material_id); } continue; @@ -1940,10 +1941,11 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback, // object name if (token[0] == 'o' && IS_SPACE((token[1]))) { // @todo { multiple object name? } - char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 2; - std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); - std::string object_name = std::string(namebuf); + + std::stringstream ss; + ss << token; + std::string object_name = ss.str(); if (callback.object_cb) { callback.object_cb(user_data, object_name.c_str()); @@ -1956,10 +1958,10 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback, if (token[0] == 't' && IS_SPACE(token[1])) { tag_t tag; - char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE]; token += 2; - std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); - tag.name = std::string(namebuf); + std::stringstream ss; + ss << token; + tag.name = ss.str(); token += tag.name.size() + 1; @@ -1980,10 +1982,9 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback, tag.stringValues.resize(static_cast(ts.num_strings)); for (size_t i = 0; i < static_cast(ts.num_strings); ++i) { - char stringValueBuffer[TINYOBJ_SSCANF_BUFFER_SIZE]; - - std::snprintf(stringValueBuffer, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token); - tag.stringValues[i] = stringValueBuffer; + std::stringstream ss; + ss << token; + tag.stringValues[i] = ss.str(); token += tag.stringValues[i].size() + 1; } -- cgit v1.2.3 From 6eca09f2bfd910556855ca8af816c504cb2c2401 Mon Sep 17 00:00:00 2001 From: Shane Loretz Date: Fri, 2 Jun 2017 07:31:19 -0700 Subject: Removed double import of sstream --- tiny_obj_loader.h | 1 - 1 file changed, 1 deletion(-) diff --git a/tiny_obj_loader.h b/tiny_obj_loader.h index 1a506da..4420831 100644 --- a/tiny_obj_loader.h +++ b/tiny_obj_loader.h @@ -44,7 +44,6 @@ THE SOFTWARE. #define TINY_OBJ_LOADER_H_ #include -#include #include #include -- cgit v1.2.3