From eda4ef852d60d4b2952106bfe0c9485b9fbfeb34 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 7 Dec 2014 02:55:49 +0100 Subject: [PATCH] Fixed Image::Get[Width|Height|Depth] returning 1 on invalid images Former-commit-id: 0822a90c3e4b29addcb74ab9a268fd88ff167f76 --- src/Nazara/Utility/Image.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Nazara/Utility/Image.cpp b/src/Nazara/Utility/Image.cpp index 5fb12ff6f..407a376b3 100644 --- a/src/Nazara/Utility/Image.cpp +++ b/src/Nazara/Utility/Image.cpp @@ -11,12 +11,16 @@ #include ///TODO: Rajouter des warnings (Formats compressés avec les méthodes Copy/Update, tests taille dans Copy) -///TODO: Rendre les méthodes exception-safe +///TODO: Rendre les méthodes exception-safe (Virer toute cette merde de calcul de pointeurs, faire usage du RAII) +///FIXME: Gérer correctement les formats utilisant moins d'un octet par pixel namespace { inline unsigned int GetLevelSize(unsigned int size, nzUInt8 level) { + if (size == 0) // Possible dans le cas d'une image invalide + return 0; + return std::max(size >> level, 1U); } @@ -28,7 +32,7 @@ namespace bool NzImageParams::IsValid() const { - return true; + return true; // Rien à vérifier } NzImage::NzImage() : @@ -195,7 +199,7 @@ void NzImage::Copy(const NzImage& source, const NzBoxui& srcBox, const NzVector3 bool NzImage::Create(nzImageType type, nzPixelFormat format, unsigned int width, unsigned int height, unsigned int depth, nzUInt8 levelCount) { - ReleaseImage(); + Destroy(); #if NAZARA_UTILITY_SAFE if (!NzPixelFormat::IsValid(format))