FIX: Cleaning up use of printf() format specifiers. %i mostly replaced by %u when appropriate.

FIX: 'size_t to %i' printf() vulnerability. 
FIX: Subdivision, change line&point handling, add missing parentheses to clarify order.
Add missing headers to vc9 workspace.

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@533 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
pull/1/head
aramis_acg 2010-01-28 23:01:33 +00:00
parent 2e3fee99f0
commit c55be8ada3
4 changed files with 23 additions and 12 deletions

View File

@ -176,7 +176,8 @@ void AC3DImporter::LoadObjectSection(std::vector<Object>& objects)
light->mAttenuationConstant = 1.f; light->mAttenuationConstant = 1.f;
// Generate a default name for both the light source and the node // Generate a default name for both the light source and the node
light->mName.length = ::sprintf(light->mName.data,"ACLight_%i",mLights->size()-1); // FIXME - what's the right way to print a size_t? Is 'zu' universally available? stick with the safe version.
light->mName.length = ::sprintf(light->mName.data,"ACLight_%i",static_cast<unsigned int>(mLights->size())-1);
obj.name = std::string( light->mName.data ); obj.name = std::string( light->mName.data );
DefaultLogger::get()->debug("AC3D: Light source encountered"); DefaultLogger::get()->debug("AC3D: Light source encountered");

View File

@ -177,7 +177,8 @@ void CatmullClarkSubdivider::Subdivide (
// point meshes are simply passed through. // point meshes are simply passed through.
for (size_t s = 0; s < nmesh; ++s) { for (size_t s = 0; s < nmesh; ++s) {
const aiMesh* i = smesh[s]; const aiMesh* i = smesh[s];
if ((i->mPrimitiveTypes & aiPrimitiveType_LINE|aiPrimitiveType_POINT)==i->mPrimitiveTypes) { // FIX - mPrimitiveTypes might not yet be initialized
if (i->mPrimitiveTypes && (i->mPrimitiveTypes & (aiPrimitiveType_LINE|aiPrimitiveType_POINT))==i->mPrimitiveTypes) {
DefaultLogger::get()->debug("Catmull-Clark Subdivider: Skipping pure line/point mesh"); DefaultLogger::get()->debug("Catmull-Clark Subdivider: Skipping pure line/point mesh");
if (discard_input) { if (discard_input) {
@ -296,7 +297,7 @@ void CatmullClarkSubdivider::InternSubdivide (
// face points and original points. Every edge exists twice // face points and original points. Every edge exists twice
// if there is a neighboring face. // if there is a neighboring face.
// --------------------------------------------------------------------- // ---------------------------------------------------------------------
for (size_t t = 0, n = 0; t < nmesh; ++t) { for (size_t t = 0; t < nmesh; ++t) {
const aiMesh* mesh = smesh[t]; const aiMesh* mesh = smesh[t];
for (unsigned int i = 0; i < mesh->mNumFaces;++i) { for (unsigned int i = 0; i < mesh->mNumFaces;++i) {
@ -342,8 +343,8 @@ void CatmullClarkSubdivider::InternSubdivide (
// faces in the mesh. They occur at outer model boundaries in non-closed // faces in the mesh. They occur at outer model boundaries in non-closed
// shapes. // shapes.
char tmp[512]; char tmp[512];
sprintf(tmp,"Catmull-Clark Subdivider: got %i bad edges touching only one face (totally %i edges). ", sprintf(tmp,"Catmull-Clark Subdivider: got %u bad edges touching only one face (totally %u edges). ",
bad_cnt,edges.size()); bad_cnt,static_cast<unsigned int>(edges.size()));
DefaultLogger::get()->debug(tmp); DefaultLogger::get()->debug(tmp);
}} }}

View File

@ -359,7 +359,7 @@ void TextureTransformStep::Execute( aiScene* pScene)
inChannels += mesh->GetNumUVChannels(); inChannels += mesh->GetNumUVChannels();
if (!mesh->mTextureCoords[0] || trafo.empty() || trafo.size() == 1 && trafo.begin()->IsUntransformed()) { if (!mesh->mTextureCoords[0] || trafo.empty() || (trafo.size() == 1 && trafo.begin()->IsUntransformed())) {
outChannels += mesh->GetNumUVChannels(); outChannels += mesh->GetNumUVChannels();
continue; continue;
} }
@ -371,10 +371,11 @@ void TextureTransformStep::Execute( aiScene* pScene)
unsigned int untransformed = 0; unsigned int untransformed = 0;
MeshTrafoList::iterator it,it2; MeshTrafoList::iterator it,it2;
for (it = trafo.begin(), it2;it != trafo.end(); ++it,++cnt) { for (it = trafo.begin();it != trafo.end(); ++it,++cnt) {
if (!(*it).IsUntransformed()) if (!(*it).IsUntransformed()) {
need = true; need = true;
}
if ((*it).lockedPos == AI_TT_UV_IDX_LOCK_TBD) { if ((*it).lockedPos == AI_TT_UV_IDX_LOCK_TBD) {
// Lock this index and make sure it won't be changed // Lock this index and make sure it won't be changed
@ -439,8 +440,8 @@ void TextureTransformStep::Execute( aiScene* pScene)
if (size > AI_MAX_NUMBER_OF_TEXTURECOORDS) { if (size > AI_MAX_NUMBER_OF_TEXTURECOORDS) {
if (!DefaultLogger::isNullLogger()) { if (!DefaultLogger::isNullLogger()) {
::sprintf(buffer,"%i UV channels required but just %i available", ::sprintf(buffer,"%u UV channels required but just %u available",
trafo.size(),AI_MAX_NUMBER_OF_TEXTURECOORDS); static_cast<unsigned int>(trafo.size()),AI_MAX_NUMBER_OF_TEXTURECOORDS);
DefaultLogger::get()->error(buffer); DefaultLogger::get()->error(buffer);
} }
@ -467,7 +468,7 @@ void TextureTransformStep::Execute( aiScene* pScene)
// Write to the log // Write to the log
if (!DefaultLogger::isNullLogger()) { if (!DefaultLogger::isNullLogger()) {
sprintf(buffer,"Mesh %i, channel %i: t(%.3f,%.3f), s(%.3f,%.3f), r(%.3f), %s%s", sprintf(buffer,"Mesh %u, channel %u: t(%.3f,%.3f), s(%.3f,%.3f), r(%.3f), %s%s",
q,n, q,n,
(*it).mTranslation.x, (*it).mTranslation.x,
(*it).mTranslation.y, (*it).mTranslation.y,
@ -550,7 +551,7 @@ void TextureTransformStep::Execute( aiScene* pScene)
if (!DefaultLogger::isNullLogger()) { if (!DefaultLogger::isNullLogger()) {
if (transformedChannels) { if (transformedChannels) {
::sprintf(buffer,"TransformUVCoordsProcess end: %i output channels (in: %i, modified: %i)", ::sprintf(buffer,"TransformUVCoordsProcess end: %u output channels (in: %u, modified: %u)",
outChannels,inChannels,transformedChannels); outChannels,inChannels,transformedChannels);
DefaultLogger::get()->info(buffer); DefaultLogger::get()->info(buffer);

View File

@ -1235,6 +1235,14 @@
RelativePath="..\..\include\aiCamera.h" RelativePath="..\..\include\aiCamera.h"
> >
</File> </File>
<File
RelativePath="..\..\include\aiColor4D.h"
>
</File>
<File
RelativePath="..\..\include\aiColor4D.inl"
>
</File>
<File <File
RelativePath="..\..\include\aiConfig.h" RelativePath="..\..\include\aiConfig.h"
> >