Fix glTF2::Asset::FindUniqueID() when the input string is >= 256 chars
authorJosh Faust <josh@torch3d.com>
Thu, 28 Sep 2017 01:41:35 +0000 (18:41 -0700)
committerJosh Faust <josh@torch3d.com>
Thu, 28 Sep 2017 01:41:35 +0000 (18:41 -0700)
code/glTF2Asset.inl

index 47904b3..264a32d 100644 (file)
@@ -1118,11 +1118,12 @@ inline std::string Asset::FindUniqueID(const std::string& str, const char* suffi
     if (it == mUsedIds.end())
         return id;
 
-    char buffer[256];
-    int offset = ai_snprintf(buffer, sizeof(buffer), "%s_", id.c_str());
+    std::vector<char> buffer;
+    buffer.resize(id.size() + 16);
+    int offset = ai_snprintf(buffer.data(), buffer.size(), "%s_", id.c_str());
     for (int i = 0; it != mUsedIds.end(); ++i) {
-        ai_snprintf(buffer + offset, sizeof(buffer) - offset, "%d", i);
-        id = buffer;
+        ai_snprintf(buffer.data() + offset, buffer.size() - offset, "%d", i);
+        id = buffer.data();
         it = mUsedIds.find(id);
     }