Browse Source

Clang-Tidy - hicpp-no-malloc.

Yao Wei Tjong 姚伟忠 7 years ago
parent
commit
a83104bda2
2 changed files with 7 additions and 4 deletions
  1. 1 2
      Source/Tools/SpritePacker/SpritePacker.cpp
  2. 6 2
      Source/Urho3D/Resource/Image.cpp

+ 1 - 2
Source/Tools/SpritePacker/SpritePacker.cpp

@@ -322,13 +322,12 @@ void Run(Vector<String>& arguments)
             ErrorExit("Could not allocate for all images.  The max sprite sheet texture size is " + String(MAX_TEXTURE_SIZE) + "x" + String(MAX_TEXTURE_SIZE) + ".");
     }
 
-
     // create image for spritesheet
     Image spriteSheetImage(context);
     spriteSheetImage.SetSize(packedWidth, packedHeight, 4);
 
     // zero out image
-    spriteSheetImage.SetData((unsigned char*)calloc(sizeof(unsigned char), (size_t)packedWidth * packedHeight * 4));
+    spriteSheetImage.SetData(nullptr);
 
     XMLFile xml(context);
     XMLElement root = xml.CreateRoot("TextureAtlas");

+ 6 - 2
Source/Urho3D/Resource/Image.cpp

@@ -834,7 +834,7 @@ bool Image::Save(Serializer& dest) const
     int len;
     unsigned char* png = stbi_write_png_to_mem(data_.Get(), 0, width_, height_, components_, &len);
     bool success = dest.Write(png, (unsigned)len) == (unsigned)len;
-    free(png);
+    free(png);      // NOLINT(hicpp-no-malloc)
     return success;
 }
 
@@ -939,7 +939,11 @@ void Image::SetData(const unsigned char* pixelData)
         return;
     }
 
-    memcpy(data_.Get(), pixelData, (size_t)width_ * height_ * depth_ * components_);
+    auto size = (size_t)width_ * height_ * depth_ * components_;
+    if (pixelData)
+        memcpy(data_.Get(), pixelData, size);
+    else
+        memset(data_.Get(), 0, size);
     nextLevel_.Reset();
 }