Преглед на файлове

- Bugfix: Collada URL parser now does read 2 digits of a %xy char only, as the spec says.

ulf преди 12 години
родител
ревизия
1cfd3b93fe
променени са 1 файла, в които са добавени 6 реда и са изтрити 3 реда
  1. 6 3
      code/ColladaLoader.cpp

+ 6 - 3
code/ColladaLoader.cpp

@@ -1445,13 +1445,16 @@ void ColladaLoader::ConvertPath (aiString& ss)
     ss.data[ss.length] = 0;
     ss.data[ss.length] = 0;
   }
   }
 
 
-  // find and convert all %xyz special chars
+  // find and convert all %xy special chars
   char* out = ss.data;
   char* out = ss.data;
   for( const char* it = ss.data; it != ss.data + ss.length; /**/ )
   for( const char* it = ss.data; it != ss.data + ss.length; /**/ )
   {
   {
-    if( *it == '%' )
+    if( *it == '%' && (it + 3) < ss.data + ss.length )
     {
     {
-      size_t nbr = strtoul16( ++it, &it);
+      // separate the number to avoid dragging in chars from behind into the parsing
+      char mychar[3] = { it[1], it[2], 0 };
+      size_t nbr = strtoul16( mychar);
+      it += 3;
       *out++ = (char)(nbr & 0xFF);
       *out++ = (char)(nbr & 0xFF);
     } else
     } else
     {
     {