diff --git a/tiny_obj_loader.cc b/tiny_obj_loader.cc index 8fe42c8..ca5222a 100644 --- a/tiny_obj_loader.cc +++ b/tiny_obj_loader.cc @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -76,7 +77,7 @@ static inline int fixIndex(int idx, int n) { static inline std::string parseString(const char *&token) { std::string s; token += strspn(token, " \t"); - int e = strcspn(token, " \t\r"); + size_t e = strcspn(token, " \t\r"); s = std::string(token, &token[e]); token += e; return s; @@ -325,7 +326,7 @@ updateVertex(std::map &vertexCache, texcoords.push_back(in_texcoords[2 * i.vt_idx + 1]); } - unsigned int idx = positions.size() / 3 - 1; + unsigned int idx = static_cast(positions.size() / 3 - 1); vertexCache[i] = idx; return idx; @@ -448,7 +449,7 @@ std::string LoadMtl(std::map &material_map, // flush previous material. if (!material.name.empty()) { material_map.insert( - std::pair(material.name, materials.size())); + std::pair(material.name, static_cast(materials.size()))); materials.push_back(material); } @@ -458,7 +459,11 @@ std::string LoadMtl(std::map &material_map, // set new mtl name char namebuf[4096]; token += 7; +#ifdef _MSC_VER + sscanf_s(token, "%s", namebuf); +#else sscanf(token, "%s", namebuf); +#endif material.name = namebuf; continue; } @@ -585,7 +590,7 @@ std::string LoadMtl(std::map &material_map, _space = strchr(token, '\t'); } if (_space) { - int len = _space - token; + std::ptrdiff_t len = _space - token; std::string key(token, len); std::string value = _space + 1; material.unknown_parameter.insert( @@ -594,7 +599,7 @@ std::string LoadMtl(std::map &material_map, } // flush last material. material_map.insert( - std::pair(material.name, materials.size())); + std::pair(material.name, static_cast(materials.size()))); materials.push_back(material); return err.str(); @@ -729,9 +734,9 @@ std::string LoadObj(std::vector &shapes, std::vector face; while (!isNewLine(token[0])) { vertex_index vi = - parseTriple(token, v.size() / 3, vn.size() / 3, vt.size() / 2); + parseTriple(token, static_cast(v.size() / 3), static_cast(vn.size() / 3), static_cast(vt.size() / 2)); face.push_back(vi); - int n = strspn(token, " \t\r"); + size_t n = strspn(token, " \t\r"); token += n; } @@ -745,7 +750,11 @@ std::string LoadObj(std::vector &shapes, char namebuf[4096]; token += 7; +#ifdef _MSC_VER + sscanf_s(token, "%s", namebuf); +#else sscanf(token, "%s", namebuf); +#endif // Create face group per material. bool ret = exportFaceGroupToShape(shape, vertexCache, v, vn, vt, @@ -768,7 +777,11 @@ std::string LoadObj(std::vector &shapes, if ((0 == strncmp(token, "mtllib", 6)) && isSpace((token[6]))) { char namebuf[4096]; token += 7; +#ifdef _MSC_VER + sscanf_s(token, "%s", namebuf); +#else sscanf(token, "%s", namebuf); +#endif std::string err_mtl = readMatFn(namebuf, materials, material_map); if (!err_mtl.empty()) { @@ -830,7 +843,11 @@ std::string LoadObj(std::vector &shapes, // @todo { multiple object name? } char namebuf[4096]; token += 2; +#ifdef _MSC_VER + sscanf_s(token, "%s", namebuf); +#else sscanf(token, "%s", namebuf); +#endif name = std::string(namebuf); continue;