- Bugfix: Collada URL parser now does read 2 digits of a %xy char only, as the spec says.
parent
196d1b54cb
commit
1cfd3b93fe
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue